webpack.config.js文件中,主要包括
entry:入口文件
output:出口文件
module:模塊
plugins:插件
這幾部分
1.基本配置
運行 webpack 這一命令可以將以app.js及其依賴的js文件打包到dist文件夾下的main.js文件下
1 var path = require('path') 2 3 module.exports = { 4 // 入口文件配置 5 entry: "./src/app.js", 6 7 // 出口文件配置項 8 output: { 9 // 輸出的路徑,webpack2起就規定必須是絕對路徑 10 path: path.join(__dirname, 'dist'), 11 // 輸出文件名字 12 filename: "main.js" 13 } 14 }
2.引入webpack-dev-server將文件打包到內存中,使得文件保存后刷新頁面即可得到新的結果
需要先進行運行:
1.npm init -y
2.npm i webpack-dev-server -g(全局安裝,否則報錯)
2.npm i webpack-dev-server@2.9.7 webpack@3.11.0 -D
1 var path = require('path') 2 3 module.exports = { 4 // 入口文件配置 5 entry: "./src/app.js", 6 7 // 輸出配置 8 output: { 9 // 輸出的路徑 10 path: path.join(__dirname, 'dist'), 11 // 靜態資源在服務器上運行時的訪問路徑,可以直接http://localhost:8080/dist/bundle.js訪問到服務器中的bundle.js文件 12 publicPath: '/dist', 13 // 輸出文件名字 14 filename: "main.js" 15 } 16 }
更改完成后運行:webpack-dev-server
下面是配置熱啟動,免刷新
運行:
3.
這個可以用來配置module文件,配置依賴的loader文件
1 module: { 2 rules: [ 3 // 配置的是用來解析.css文件的loader(style-loader和css-loader) 4 { 5 // 1.0 用正則匹配當前訪問的文件的后綴名是 .css 6 test: /\.css$/, 7 use: ['style-loader', 'css-loader'] //webpack底層調用這些包的順序是從右到左 8 } 9 ] 10 }
3.1
1 { 2 test: /\.less$/, 3 use: [{ 4 loader: 'style-loader' 5 }, { 6 loader: 'css-loader' 7 }, { 8 loader: 'less-loader' 9 }] 10 },
1 { 2 test: /\.scss$/, 3 use: [{ 4 loader: 'style-loader' 5 }, { 6 loader: 'css-loader' 7 }, { 8 loader: 'sass-loader' 9 }] 10 }
3.2
1 { 2 test: /\.(png|jpg|gif)/, 3 use: [{ 4 loader: 'url-loader', 5 options: { 6 // limit表示如果圖片大於50000byte,就以路徑形式展示,小於的話就用base64格式展示 7 limit: 50000 8 } 9 }] 10 }
4.
1 // 注意需要注釋掉publicPath,不然會沖突 2 3 var HtmlWebpackPlugin = require('html-webpack-plugin') 4 5 plugins: [ 6 new HtmlWebpackPlugin({ 7 filename: 'index.html', 8 template: 'template.html' 9 }) 10 ]
5.npm install babel-core babel-loader babel-preset-env --save-dev
1 { 2 test: /\.js$/, 3 // Webpack2建議盡量避免exclude,更傾向於使用include 4 // exclude: /(node_modules)/, // node_modules下面的.js文件會被排除 5 include: [path.resolve(__dirname, 'src')] 6 use: { 7 loader: 'babel-loader', 8 // options里面的東西可以放到.babelrc文件中去 9 options: { 10 presets: ['env'] 11 } 12 } 13 }
同時要新建一個.babelrc文件
1 配置如下: 2 { 3 "presets":["env"] 4 }