此教程針對 Webpack 爲 4.X 版本css
Webpack
支持零配置,若是 entry
不配置,默認值爲 ./src
;若是 output
不寫,默認值爲 ./dist
。html
Webpack
在 4.X
版本廢棄了 CommonsChunkPlugin
,須要使用 optimize.splitChunks
來替換。node
extract-text-webpack-plugin@4.0.0-beta.0
有不少問題,基於官方推薦,咱們使用 mini-css-extract-plugin
來替換。webpack
webpack.config.js
是不能使用 import
命令的,須要把文件名改爲 webpack.config.babel.js
才能夠。這是一個 webpack
支持的特性,只要你把文件名改爲 webpack.config.[loader].js
, webpack 就會用相應的 loader
去轉換一遍配置文件。web
Webpack
新增了 mode
配置,有兩個參數,一個爲 production
,另外一個爲 development
。api
API 地址瀏覽器
Babel
主要是用來把代碼轉譯爲 ES5
。使用前須要在 webpack.config.babel.js
配置 babel-loader
,其次,在新增 .babelrc
文件,在該文件中進行配置一些轉譯規則。babel
在線轉譯的網址less
Mobx
是一個簡單、可擴展的狀態管理庫。ide
Less
在 CSS
的語法基礎之上,引入了變量,Mixin
(混入),運算以及函數等功能,大大簡化了 CSS
的編寫,而且下降了 CSS
的維護成本,就像它的名稱所說的那樣,Less
能夠讓咱們用更少的代碼作更多的事情。
新建 webpack.config.babel.js
文件,並做以下配置。
import path from 'path';
// 清除文件夾內文件插件
import CleanWebpackPlugin from 'clean-webpack-plugin';
// 生成 HTML 文件插件
import HtmlWebpackPlugin from 'html-webpack-plugin';
import MiniCssExtractPlugin from 'mini-css-extract-plugin';
// 打開瀏覽器插件
import OpenBrowserPlugin from 'open-browser-webpack-plugin';
import alias from './webpack.alias.js';
const port = 9676;
module.exports = {
// 入口文件
entry: './src/index.js',
// 輸出
output: {
// 輸出文件名
filename: 'bundle.js',
// 輸出路徑
path: path.resolve(__dirname, 'dist')
},
// loader
module: {
rules: [{
test: /\.js[x]?$/,
loader: 'babel-loader',
// node_modules 不使用 babel-loader
exclude: /node_modules/
}, {
test: /\.less$/,
use: [MiniCssExtractPlugin.loader, 'css-loader', 'less-loader']
}, {
test: /\.css/,
use: [MiniCssExtractPlugin.loader, 'css-loader']
}]
},
resolve: {
alias: alias,
extensions: ['.js', '.jsx']
},
plugins: [
new HtmlWebpackPlugin({
title: 'Blog',
template: path.join(__dirname, 'template.ejs')
}),
new MiniCssExtractPlugin({
filename: '[name].css',
allChunks: true
}),
new CleanWebpackPlugin('./dist/*.*'),
new OpenBrowserPlugin({url: `http://localhost:${port}`})
],
devServer: {
// 端口號
port: port,
host: '0.0.0.0',
compress: true,
proxy: {
'/api/*': {
target: 'http://localhost:8987'
}
}
}
};
複製代碼