安装
npm install --save-dev webpack@4.30.0 webpack-cli@3.3.2
更新 package.json
脚本
"scripts": { "build": "webpack --config webpack.config.js" }
更新目录结构
webpack-demo |- package.json + |- webpack.config.js + |- index.html + |- /src + |- index.js
更新 webpack.config.js
const path = require('path'); module.exports = { entry: './src/index.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') } };
设定 HtmlWebpackPlugin
npm install --save-dev html-webpack-plugin@3.2.0 # webpack.config.js const HtmlWebpackPlugin = require('html-webpack-plugin'); // ... plugins: [ new HtmlWebpackPlugin({ filename: path.resolve(__dirname, 'dist/index.html'), template: path.resolve(__dirname, 'index.html'), inject: true, chunksSortMode: 'dependency' }) ]
清理 /dist 文件夹
npm install clean-webpack-plugin@1.0.1 --save-dev # webpack.config.js const CleanWebpackPlugin = require('clean-webpack-plugin'); // ... plugins: [ new CleanWebpackPlugin(['dist']) ],
使用观察模式
"watch": "webpack --watch"
运行 npm run watch
可以实时编译文件。
配置 babel
npm install -D babel-loader@7.1.4 npm install -D babel-core@6.26.0 npm install -D babel-preset-env@1.6.1 # npm install -D babel-loader@7.1.4 babel-core@6.26.0 babel-preset-env@1.6.1
新建 .babelrc
文件
{ "presets": ["env"] }
修改 webpack.config.js
module.exports={ module: { rules: [ { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" } ] } }
配置 sass
npm install -D node-sass@4.11.0 sass-loader@7.1.0 css-loader@2.1.0 style-loader@0.23.1 # webpack.config.js module: { rules: [ { test: /\.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'] } ] }
运行
npm run build
调试模式
安装依赖
npm install --save-dev webpack-dev-server
修改 webpack.config.js
const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const CleanWebpackPlugin = require('clean-webpack-plugin'); module.exports = { entry: { test: './src/test.js' }, output: { filename: '[name].js', path: path.resolve(__dirname, 'dist') }, // 告知 webpack-dev-server,在 localhost:8080 下建立服务,将 dist 目录下的文件,作为可访问文件。 devServer: { contentBase: './dist' }, plugins: [ new HtmlWebpackPlugin({ filename: path.resolve(__dirname, 'dist/index.html'), template: path.resolve(__dirname, 'src/test.html'), inject: true, chunksSortMode: 'dependency' }), new CleanWebpackPlugin(['dist']) ] };
在 package.json
中添加脚本
"dev": "webpack-dev-server --open"