[原]webpack 升级 4.25
1. package 的内容
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-plugin-import": "1.6.2",
"babel-plugin-transform-decorators-legacy": "^1.3.4",
"babel-plugin-transform-object-rest-spread": "^6.26.0",
"babel-polyfill": "^6.26.0",
"babel-preset-env": "^1.6.0",
"babel-preset-es2015": "6.24.1",
"babel-preset-react": "^6.24.1",
"babel-preset-react-app": "^3.1.0",
"babel-preset-stage-2": "6.24.1",
"chalk": "^2.3.0",
"chokidar": "^1.7.0",
"copy-webpack-plugin": "^4.0.1",
"css-hot-loader": "^1.3.1",
"css-loader": "^0.28.7",
"extract-text-webpack-plugin": "3.0.2",
"mini-css-extract-plugin": "^0.4.4",
"file-loader": "2.0.0",
"fs": "0.0.1-security",
"html-loader": "^0.5.1",
"html-webpack-plugin": "3.2.0",
"json-server": "^0.12.1",
"less": "^2.7.3",
"less-loader": "^4.0.5",
"node-sass": "^4.5.3",
"rimraf": "^2.6.1",
"sass-loader": "^6.0.6",
"server-destroy": "^1.0.1",
"source-list-map": "^2.0.0",
"style-loader": "^0.18.2",
"uglify-js": "^3.0.28",
"url-loader": "^0.5.9",
"webpack": "4.25.1",
"webpack-dev-server": "^3.1.0",
"webpack-cli": "3.1.2"
}
2. 如果用了 html-webpack-plugin 要加一个配置, 否则报错 为什么没仔细看..
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin(),
// extractCSS,
// extractSCSS,
new MiniCssExtractPlugin({
// Options similar to the same options in webpackOptions.output
// both options are optional
filename: devMode ? '[name].css' : '[name].[hash].css',
chunkFilename: devMode ? '[id].css' : '[id].[hash].css',
}),
new HtmlWebpackPlugin(
{
inject: true,
template: './public/index.html',
chunksSortMode: 'none'
}
),
new CopyWebpackPlugin([
{ from: './public/img', to: 'public/img' },
// { from: './public/spec.json', to: 'public/spec.json' },
// { from: './public/swagger.json', to: 'public/swagger.json' },
{ from: './public', to: 'public' }
],
{ copyUnmodified: false }
)
]
3. 如果用了 extract-text-webpack-plugin 换成 mini-css-extract-plugin 比较简单, 类似这样
{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
"css-loader"
]
},
{
test: /\.less$/,
use: [
MiniCssExtractPlugin.loader,
"css-loader",
{
loader: "less-loader",
options: { modifyVars: theme } // no need to JSON.stringify()
},
]
},
{
test: /\.scss$/,
use: [
"css-hot-loader",
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: { alias: { '../img': '../public/img' }, module: false }
}
, "sass-loader",
]
},