Webpack使用
Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将模块按照指定的规则生成对应的静态资源。
一 . 打包JS文件:
新建文件目录包含:
<!DOCTYPE html> <html> <header> <meta charset="utf-8"> <title>WEBPACK</title> </header> <body> <div id="d1"></div> </body> <script src="./bundle.js"></script> </html>
var d1 = document.getElementById('d1'); d1.innerText = "测试文字"
- 初始文件 cnpm init 生成 page.json 文件 ;
- 安装 webpack : cnpm install webapck -d;
- 执行打包命令 webpack src/min.js bundle.js;
- 多个js文件打包, 新建 02.js 文件,在min.js 中引入该文件,执行打包 命令;
require('./02.js'); var d1 = document.getElementById('d1'); d1.innerText = "测试文字";
- 新建 webpack 配置文件(webpack.config.js);
var path = require('path'); module.exports = { entry: './src/min.js', //入口文件(必须是绝对路径) output : { path: path.resolve(__dirname, './'), //打包文件路径(必须是绝对路径) filename: 'bundle.js', //生成文件名字 } }
新建配置文件后,打包文件直接使用命令 webpack 即可 ( ) ;
- 其他命令:
- webpack --config //另一份配置文件
- webpack -display-error-details //显示异常信息
- webpack -w //监听变动并自动打包
- webpack -d //生成map映射文件,告知哪些模块被最终打包到哪里了
- webpack -p //压缩混淆脚本,这个非常非常重要!
二. Loader
webpack本身只能处理JS文件,如果想要处理其他文件。就需要使用 loader 进行转换。
css 文件打包时需要安装 css-loader 和 style-loader ( cnpm install css-loader style-loader )。然后,在min.js中引入css文件。需要注意的是,在require的时候要标注需要的loader。
require('./css.css');
在webpack.config.js 文件中,增加 module ;
var path = require('path'); module.exports = { entry: './src/min.js', //入口文件(必须是绝对路径) output : { path: path.resolve(__dirname, './'), //打包文件路径(必须是绝对路径) filename: 'bundle.js', //生成文件名字 }, module:{ loaders:[ {test:/\.css$/,loader:'style-loader!css-loader'} ] } }
三.配置本地服务
1.安装 cnpm install webpack-dev-server --save-dev
2.在webpack.config.js中配置 devServer
var path = require('path'); module.exports = { entry: './src/min.js', //入口文件(必须是绝对路径) output : { path: path.resolve(__dirname, './dist'), //打包文件路径(必须是绝对路径) filename: 'bundle.js', //生成文件名字 }, module:{ loaders:[ {test:/\.css$/,loader:'style-loader!css-loader'} ] }, devServer:{ contentBase: "./", //本地服务器在那个页面搭建 historyApiFallback:true, //任意的跳转或404响应可以指向 index.html 页面;不跳转 inline:true, //实时刷新 // hot:true, port:9000 } }
在page,json的scripts中增加启动本地服务设置:执行命令 cnpm run dev 启动本地服务。
"scripts": { "dev":"webpack-dev-server --inline", "test": "echo \"Error: no test specified\" && exit 1" },
3.代码热更新
本地服务如果想要实现,代码热更新需要使用两个插件:
a. "html-webpack-plugin" 安装 cnpm install html-webpack-plugin --save-dev
这个插件将为您生成一个HTML5文件,该文件的 body 中使用script
标记引用了所有 webpack bundle。 安装后需要在webpack.config.js 中配置 plugins :
b. “HotModuleReplacementPlugin” 启用 HMR 热替换模块
plugins: [ new HtmlWebpackPlugin({ // template: './index.html' }), new webpack.HotModuleReplacementPlugin() //热更新 ],
代码下载:https://github.com/sunyouheng666/webpack