最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

关于webpack的详细介绍

来源:动视网 责编:小采 时间:2020-11-27 20:20:25
文档

关于webpack的详细介绍

关于webpack的详细介绍:Webpack是前端一个工具,可以让各个模块进行加载,预处理,再进行打包,它能有Grunt或Gulp所有基本功能。之前使用的是gulp ,进行页面的css和js,打包压缩,配置简单,但是太过琐碎麻烦,使用sass时,直接在sass里导入sass文件,容易报错(不知道怎么回事)
推荐度:
导读关于webpack的详细介绍:Webpack是前端一个工具,可以让各个模块进行加载,预处理,再进行打包,它能有Grunt或Gulp所有基本功能。之前使用的是gulp ,进行页面的css和js,打包压缩,配置简单,但是太过琐碎麻烦,使用sass时,直接在sass里导入sass文件,容易报错(不知道怎么回事)
 Webpack是前端一个工具,可以让各个模块进行加载,预处理,再进行打包,它能有Grunt或Gulp所有基本功能。

之前使用的是gulp ,进行页面的css和js,打包压缩,配置简单,但是太过琐碎麻烦,使用sass时,直接在sass里导入sass文件,容易报错(不知道怎么回事)

webpack吸引我的地方:模块化,按需加载,压缩css,内嵌样式,样式。压缩js,压缩页面

参考文章:(1.0版本)

学习视频:(1.0版本)

自己安装webpack版本2.0(有些地方需要注意)

一. 安装

安装测试node和npm

1 $ node -v2 v6.11.0
$ npm -v3.10.10

新建文件夹webpack,,进入项目目录webpack,进行安装:

1,使用npm init -y生成package.json文件

npm init -y

2,安装webpack(貌似全局安装webpack,可以直接在命令行输入webpack进行打包)

//全局安装
npm install -g webpack
//安装到你的项目目录
npm install --save-dev webpack

 测试webpack版本为:$ webpack -v 2.6.1

配置命令

这是在 package.json 文件中配置的

"scripts": {"build": "webpack --profile --progress --colors --display-error-details","dev": "webpack --display-modules --profile --progress --colors --display-error-details","dev-hrm": "webpack-dev-server --config"
 },
  • color 输出结果带彩色,比如:会用红色显示耗时较长的步骤

  • profile 输出性能数据,可以看到每一步的耗时

  • progress 输出当前编译的进度,以百分比的形式呈现

  • display-modules 默认情况下 node_modules 下的模块会被隐藏,加上这个参数可以显示这些被隐藏的模块

  • display-error-details 输出详细的错误信息

  • webpack-dev-server 将会开启热更新

  • 更多请参考官网 cli

  • // 开发模式npm run dev// 热更新模式npm run dev-hrm// 发布模式npm run build

    二. 配置

    新建webpack.config.js

    module.exports = {

      entry:{
        main:"./src/app.js?1.1.11",
      } ,//已多次提及的唯一入口文件

    + "/dist",filename: "js/[name].js?1.1.11",

    HtmlWebpackPlugin

    依据一个简单的模板,帮你生成最终的Html5文件

    npm install --save-dev html-webpack-plugin
     plugins:[new htmlWebpackPlugin({
     filename:'index.html',
     template:'index.html',
     inject:'body',
     title:'首页',
     }),
     ]

    Loaders

    鼎鼎大名的Loaders登场了!

    Loaders是webpack中最让人激动人心的功能之一了。通过使用不同的loader,webpack通过调用外部的脚本或工具可以对各种各样的格式的文件进行处理,比如说分析JSON文件并把它转换为JavaScript文件,或者说把下一代的JS文件(ES6,ES7)转换为现代浏览器可以识别的JS文件。或者说对React的开发而言,合适的Loaders可以把React的JSX文件转换为JS文件。


    Loaders需要单独安装并且需要在webpack.config.js下的modules关键字下进行配置,Loaders的配置选项包括以下几方面:


  • test:一个匹配loaders所处理的文件的拓展名的正则表达式(必须)

  • loader:loader的名称(必须)

  • include/exclude:手动添加必须处理的文件(文件夹)或屏蔽不需要处理的文件(文件夹)(可选);

  • query:为loaders提供额外的设置选项(可选)

  • Babel

    Babel其实是一个编译JavaScript的平台,它的强大之处表现在可以通过编译帮你达到以下目的:


  • 下一代的JavaScript标准(ES6,ES7),这些标准目前并未被当前的浏览器完全的支持;

  • 使用基于JavaScript进行了拓展的语言,比如React的JSX

  • // npm一次性安装多个依赖模块,模块之间用空格隔开npm install --save-dev babel-core babel-loader babel-preset-es2015 babel-preset-react
    {
     test: /\.js$/,
     loader: 'babel-loader',
     include: path.resolve(__dirname,'src'),
     exclude: path.resolve(__dirname,'node_modules'),
     query:{
     presets:["es2015"]
     }
     }

    CSS,CSS预处理器

    首先安装postcss-loader 和 autoprefixer(自动添加前缀的插件)

    npm install --save-dev style-loader css-loader
    {
     test:/\.css$/,
     loader: [ 'style-loader',
     { loader: 'css-loader', options: { importLoaders: 1 } }, 'postcss-loader']
     }
    npm install --save-dev less-loader less
    npm install --save-dev postcss-loader autoprefixer

    在完成一系列的操作后

    package.json:

    { "name": "webpack", "version": "1.0.0", "main": "index.js?1.1.11", "scripts": {"test": "echo \"Error: no test specified\" && exit 1","webpack": "webpack --config webpack.config.js --progress --display-module --colors"
     }, "keywords": [], "author": "", "license": "ISC", "devDependencies": {"autoprefixer": "^7.1.1","babel-core": "^6.25.0","babel-loader": "^7.0.0","babel-preset-es2015": "^6.24.1","babel-preset-latest": "^6.24.1","babel-preset-react": "^6.24.1","css-loader": "^0.28.4","file-loader": "^0.11.2","html-loader": "^0.4.5","html-minify-loader": "^1.1.0","html-webpack-plugin": "^2.28.0","image-webpack-loader": "^3.3.1","less": "^2.7.2","less-loader": "^4.0.4","postcss-loader": "^2.0.5","style-loader": "^0.18.2","url-loader": "^0.5.9","webpack": "^2.6.1"
     }, "dependencies": {"acorn": "^5.0.3","acorn-dynamic-import": "^2.0.2","ajv": "^4.11.8","anymatch": "^1.3.0","align-text": "^0.1.4","arr-diff": "^2.0.0","arr-flatten": "^1.0.3","array-unique": "^0.2.1","arrify": "^1.0.1","asn1.js?1.1.11": "^4.9.1","async": "^2.4.1","async-each": "^1.0.1","balanced-match": "^1.0.0","base-js": "^1.2.0","binary-extensions": "^1.8.0","bn.js?1.1.11": "^4.11.6","brace-expansion": "^1.1.8","braces": "^1.8.5","brorand": "^1.1.0","browserify-aes": "^1.0.6","browserify-cipher": "^1.0.0","browserify-des": "^1.0.0","browserify-sign": "^4.0.4","browserify-zlib": "^0.1.4","buffer": "^4.9.1","buffer-xor": "^1.0.3","builtin-modules": "^1.1.1","builtin-status-codes": "^3.0.0","camelcase": "^3.0.0","center-align": "^0.1.3","chokidar": "^1.7.0","cipher-base": "^1.0.3","co": "^4.6.0","cliui": "^3.2.0","browserify-rsa": "^4.0.1","code-point-at": "^1.1.0","assert": "^1.4.1","concat-map": "^0.0.1","console-browserify": "^1.1.0","constants-browserify": "^1.0.0","create-hmac": "^1.1.6","create-ecdh": "^4.0.0","crypto-browserify": "^3.11.0","create-hash": "^1.1.3","date-now": "^0.1.4","decamelize": "^1.2.0","des.js?1.1.11": "^1.0.0","diffie-hellman": "^5.0.2","domain-browser": "^1.1.7","elliptic": "^6.4.0","enhanced-resolve": "^3.1.0","errno": "^0.1.4","events": "^1.1.1","error-ex": "^1.3.1","expand-brackets": "^0.1.5","expand-range": "^1.8.2","extglob": "^0.3.2","filename-regex": "^2.0.1","fill-range": "^2.2.3","find-up": "^1.1.2","for-own": "^0.1.5","evp_bytestokey": "^1.0.0","get-caller-file": "^1.0.2","fsevents": "^1.1.1","glob-base": "^0.3.0","for-in": "^1.0.2","glob-parent": "^2.0.0","graceful-fs": "^4.1.11","has-flag": "^1.0.0","hash.js?1.1.11": "^1.0.3","hash-base": "^2.0.2","hmac-drbg": "^1.0.1","hosted-git-info": "^2.4.2","html-webpack-plugin": "^2.28.0","https-browserify": "^0.0.1","ieee754": "^1.1.8","ajv-keywords": "^1.5.1","indexof": "^0.0.1","invert-kv": "^1.0.0","interpret": "^1.0.3","is-arrayish": "^0.2.1","is-binary-path": "^1.0.1","is-buffer": "^1.1.5","is-dotfile": "^1.0.3","is-builtin-module": "^1.0.0","is-equal-shallow": "^0.1.3","is-extendable": "^0.1.1","is-extglob": "^1.0.0","is-fullwidth-code-point": "^1.0.0","is-glob": "^2.0.1","is-number": "^3.0.0","is-posix-bracket": "^0.1.1","is-primitive": "^2.0.0","is-utf8": "^0.2.1","json-loader": "^0.5.4","json-stable-stringify": "^1.0.1","jsonify": "^0.0.0","kind-of": "^4.0.0","isobject": "^2.1.0","lazy-cache": "^1.0.4","lcid": "^1.0.0","load-json-file": "^1.1.0","loader-runner": "^2.3.0","longest": "^1.0.1","micromatch": "^2.3.11","memory-fs": "^0.4.1","minimalistic-assert": "^1.0.0","miller-rabin": "^4.0.0","minimalistic-crypto-utils": "^1.0.1","minimatch": "^3.0.4","mkdirp": "^0.5.1","minimist": "^0.0.8","node-libs-browser": "^2.0.0","normalize-path": "^2.1.1","object.omit": "^2.0.1","number-is-nan": "^1.0.1","os-browserify": "^0.2.1","os-locale": "^1.4.0","normalize-package-data": "^2.3.8","pako": "^0.2.9","parse-asn1": "^5.1.0","parse-glob": "^3.0.4","parse-json": "^2.2.0","path-browserify": "^0.0.0","path-exists": "^2.1.0","path-type": "^1.1.0","pbkdf2": "^3.0.12","pify": "^2.3.0","path-is-absolute": "^1.0.1","pinkie": "^2.0.4","pinkie-promise": "^2.0.1","preserve": "^0.2.0","process": "^0.11.10","process-nextick-args": "^1.0.7","prr": "^0.0.0","public-encrypt": "^4.0.0","punycode": "^1.4.1","querystring": "^0.2.0","querystring-es3": "^0.2.1","randomatic": "^1.1.7","randombytes": "^2.0.5","read-pkg": "^1.1.0","read-pkg-up": "^1.0.1","readdirp": "^2.1.0","regex-cache": "^0.4.3","repeat-element": "^1.1.2","repeat-string": "^1.6.1","require-directory": "^2.1.1","right-align": "^0.1.3","require-main-filename": "^1.0.1","remove-trailing-separator": "^1.0.2","safe-buffer": "^5.1.0","ripemd160": "^2.0.1","semver": "^5.3.0","set-immediate-shim": "^1.0.1","set-blocking": "^2.0.0","setimmediate": "^1.0.5","sha.js?1.1.11": "^2.4.8","source-list-map": "^1.1.2","spdx-correct": "^1.0.2","spdx-license-ids": "^1.2.2","stream-browserify": "^2.0.1","spdx-expression-parse": "^1.0.4","stream-http": "^2.7.1","string-width": "^1.0.2","strip-bom": "^2.0.0","supports-color": "^3.2.3","timers-browserify": "^2.0.2","tapable": "^0.2.6","to-arraybuffer": "^1.0.1","tty-browserify": "^0.0.0","uglify-to-browserify": "^1.0.2","util": "^0.10.3","url": "^0.11.0","validate-npm-package-license": "^3.0.1","util-deprecate": "^1.0.2","vm-browserify": "^0.0.4","watchpack": "^1.3.1","webpack-sources": "^0.2.3","webpack": "^2.6.1","which-module": "^1.0.0","window-size": "^0.1.0","wordwrap": "^0.0.2","wrap-ansi": "^2.1.0","xtend": "^4.0.1","y18n": "^3.2.1","yargs": "^6.6.0","yargs-parser": "^4.2.1"
     }, "description": ""}
    View Code

    webpack.config.js

    var htmlWebpackPlugin = require('html-webpack-plugin');var path = require('path');
    
    module.exports = {
     entry:{
     main:"./src/app.js?1.1.11",
     } ,
     output:{
     path:__dirname+'/dist',
     filename:'js/[name].bundle.js',//publicPath:'http://hotdeals.com/' },
     module:{
     loaders:[
     {
     test: /\.js$/,
     loader: 'babel-loader',
     include: path.resolve(__dirname,'src'),
     exclude: path.resolve(__dirname,'node_modules'),
     query:{
     presets:["es2015"]
     }
     },{
     test:/\.html/,
     loader:'html-loader' },
     {
     test:/\.css$/,
     loader: [ 'style-loader',
     { loader: 'css-loader', options: { importLoaders: 1 } }, 'postcss-loader']
     },{
     test:/\.less$/,
     loader:'style-loader!css-loader!postcss-loader!less-loader' },
     {
     test:/\.(jpe?g|png|gif|svg)$/i,
     loaders:[ 'file-loader?limit=200&name=assets/[name]-[hash:5].[ext]',
     {
     loader: 'image-webpack-loader',
     query: {
     progressive: true,
     optimizationLevel: 7,
     interlaced: false,
     pngquant: {
     quality: '65-90',
     speed: 4 }
     }
     }
     ],
     },
     ]
    
     },
    
     plugins:[new htmlWebpackPlugin({
     filename:'index.html',
     template:'index.html',
     inject:'body',
     title:'首页',
     }),
     ]
    }
    View Code

    postcss.config.js(webpack2.0使用css添加前缀,看官网更好)

    module.exports = {
     plugins: {'autoprefixer': {},
     }
    }
    View Code

    项目文件:

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title><%= htmlWebpackPlugin.options.title %></title>
    </head>
    <body>
     <img src="src/assets/songzhixiao.jpeg" alt="">
     <div id="app"></div>
     <!-- 我是一行注释 -->
    </body>
    </html>
    View Code

    app.js

    import './css/common.css';
    import Layer from './components/layer/layer.js';
    
    
    const App = function(){var dom = document.getElementById('app');var lay = new Layer();
     dom.innerHTML=lay.tpl;
    }new App();
    View Code

    layer.js

    import './layer.less'import tpl from './layer.html'function layer(){return {
     name:'layer',
     tpl: tpl
     }
    }
    
    export default layer;
    View Code

    文档

    关于webpack的详细介绍

    关于webpack的详细介绍:Webpack是前端一个工具,可以让各个模块进行加载,预处理,再进行打包,它能有Grunt或Gulp所有基本功能。之前使用的是gulp ,进行页面的css和js,打包压缩,配置简单,但是太过琐碎麻烦,使用sass时,直接在sass里导入sass文件,容易报错(不知道怎么回事)
    推荐度:
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top