Webpack learning
前言
目的
使用 webpack 打包单页应用
目录结构
1 | │ index.html |
最终的目录结构: dist 是 build 的目录, src 是 source 目录,webpack.config.js 为 webpack 的配置文件
package.json
1 | "scripts": { |
npm start 启动 webpack-dev-server 来 watch 文件变化,并且自动刷新页面
npm run build 启动 build 过程,构建应用
开始
创建一个文件夹,并生成 package.json
1 | mkdir webpack-learning |
安装 webpack 和 webpack-dev-server
1 | npm i webpack webpack-dev-server -D |
新建文件: webpack.config.js
1 | const path = require('path') //path模块 |
在 src 中新建main.js
随便写一些代码 执行npm run build
最后在输出文件到/dist/js/app.e924425.js
添加一些 modules 和 plugins
添加 modules 即一些类型的 loader
####将代码转为 es2015 需添加 babel-loader
1 | npm i babel-loader babel-core babel-preset-es2015 -D |
在 webpack.config.js 中添加
1 | module: { |
这里的 test 是匹配文件
这里编译以后会将
1 | const st = 'world' |
添加 less css style loader
1 | npm i less less-loader css-loader style-loader -D |
在 webpack.config.js 中添加
1 | module: { |
这里要说明一下这个 loader 他执行顺序是从右向左,也就是先 loader less 把 less 转为 css 再 loader css 把 css 丢到 js 里面。
其他 loader 套路都差不多,图片等资源文件使用 url-loader
添加 plugins
目前使用的 plugins 不多。需要安装的有
1 | const UglifyJSPlugin = require('uglifyjs-webpack-plugin') |
1 | plugins: [ |
HtmlWebpackPlugin
这个插件可以将生成的 js 自动插入 html 里面
CommonsChunkPlugin
当然是公共模块的插件
CleanWebpackPlugin
因为每次 build 后 js 会带 hash 值,文件名不一样,为了防止目录变得
1 | -js |
如此的臃肿,所以 build 的时候应当清空 dist 目录。这个插件就是用来清空 dist 目录的
结束
最后我们的webpack.config.js
长这样子
1 | const path = require('path') |
这里推荐一个不错的教程webpack-howto
下回,多页的 webpack