Vue2项目热启动慢且出现乱码通常与source-map配置有关,主要原因包括: 1. 开发环境下使用了过于详细的source-map生成策略 2. 编码配置不正确导致乱码 3. Webpack构建配置未针对开发环境优化
在vue.config.js
中调整devtool配置:
module.exports = {
configureWebpack: {
devtool: process.env.NODE_ENV === 'development'
? 'cheap-module-eval-source-map'
: 'source-map'
}
}
推荐开发环境使用以下source-map类型:
- cheap-module-eval-source-map
- 构建速度快,适合开发环境
- eval-source-map
- 速度较快,但会增大bundle体积
- eval
- 最快,但转换后的代码
确保项目文件和配置使用UTF-8编码:
module.exports = {
configureWebpack: {
module: {
rules: [
{
test: /\.(js|vue)$/,
loader: 'charset-loader',
options: {
charset: 'utf-8'
}
}
]
}
}
}
module.exports = {
configureWebpack: {
cache: true
}
}
const HardSourceWebpackPlugin = require('hard-source-webpack-plugin')
module.exports = {
configureWebpack: {
plugins: [
new HardSourceWebpackPlugin()
]
}
}
module.exports = {
chainWebpack: config => {
// 开发环境不提取CSS
config.plugins.delete('extract-css')
// 开发环境不压缩
config.optimization.minimize(false)
}
}
const HardSourceWebpackPlugin = require('hard-source-webpack-plugin')
module.exports = {
configureWebpack: {
devtool: process.env.NODE_ENV === 'development'
? 'cheap-module-eval-source-map'
: 'source-map',
cache: true,
plugins: [
new HardSourceWebpackPlugin()
],
module: {
rules: [
{
test: /\.(js|vue)$/,
loader: 'charset-loader',
options: {
charset: 'utf-8'
}
}
]
}
},
chainWebpack: config => {
if (process.env.NODE_ENV === 'development') {
config.plugins.delete('extract-css')
config.optimization.minimize(false)
}
}
}
cheap-module-eval-source-map
这些优化应该能显著改善Vue2项目的热启动速度并解决乱码问题。