如何使vue项目体积更小打包速度更快呢
AI 概述
让项目体积更小点压缩打包的文件包安装webapack 配置删除多余的文件包安装webapack 配置删除 prefetch、preloadwebpack 配置忽略 moment 本地化webpack 配置按需加载 ElementBabel.config.js按需导入组件按需加载 EchartBabel.config.js按需使用 echart按需加载 loadshBabel.config.jswebpack 配置让项...
目录
文章目录隐藏
有时候开发完一个 vue 项目后,会发现项目包又大打包速度还慢,里面还有很多冗余的文件,比如图片,.vue 文件,.js 文件等,如果你也遇到类似问题,或者你希望你的项目包更小点,打包速度更快点,本文也许对你有所帮助。
让项目体积更小点
压缩打包的文件
包安装
npm i compression-webpack-plugin@5.0.0 -D cnpm i compression-webpack-plugin@5.0.0 -D yarn add compression-webpack-plugin@5.0.0
webapack 配置
module.exports = {
...
chainWebpack:config => {
config.plugin('compression')
.use(
new CompressionWebpackPlugin(
{
filename: info => {
return `${info.path}.gz${info.query}`
},
algorithm: 'gzip',
threshold: 10240,
test: /\.(js|css|json|txt|html|ico|svg)(\?.*)?$/i,
minRatio: 0.8,
deleteOriginalAssets: true
}
)
)
}
}
推荐在生产环境使用
删除多余的文件
包安装
npm i useless-files-webpack-plugin -D cnpm i useless-files-webpack-plugin -D yarn add useless-files-webpack-plugin
webapack 配置
module.exports = {
...
chainWebpack = config => {
config.plugin('uselessFile')
.use(
new UselessFile({
root: path.resolve(__dirname,'./src/assets/images'),
clean:true,
exclude: /node_modules/
})
)
}
}
推荐生产环境使用
删除 prefetch、preload
webpack 配置
module.exports = {
...
chainWebpack: config =>{
config.plugins.delete('prefetch')
config.plugins.delete('preload')
}
}
忽略 moment 本地化
webpack 配置
module.exports = {
...
chainWebpack : config=>{
config.plugin('IgnorePlugin')
.use(new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/))
}
}
按需加载 Element
Babel.config.js
module.exports = {
...
plugins:[
[
"component",
{
libraryName: "element-ui",
styleLibraryName: "theme-chalk"
}
]
]
}
按需导入组件
import Vue from 'vue'
import { Dialog } from 'element-ui'
Vue.use(Dialog)
按需加载 Echart
Babel.config.js
module.exports = {
...
plugins:[
...
'equire'
]
}
按需使用 echart
// eslint-disable-next-line const echarts = equire([ "line", "bar" ]) export default echarts
按需加载 loadsh
Babel.config.js
module.exports = {
...
plugins:[
...
'lodash'
]
}
webpack 配置
module.exports = {
...
chainWebpack: config =>{
...
config.plugin('loadshReplace')
.use(new LodashModuleReplacementPlugin())
}
}
让项目打包更快
开启多线程打包(HappyPack)
包安装
npm i happypack -D cnpm i happypack -D yarn add happypack
webpack 配置
const HappyPack = require('happypack')
const os = require('os')
const happyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length })
module.exports = {
...
chainWebpack: config =>{
...
const jsRule = config.module.rule('js')
jsRule.uses.clear()
jsRule.use('happypack/loader?id=babel')
.loader('happypack/loader?id=babel')
.end()
config.plugins.push(
new HappyPack({
id:'babel',
loaders:['babel-loader?cacheDirectory=true'],
threadPool:happyThreadPool
})
)
}
}
动态链打包
webpack.dll.config
const webpack = require('webpack')
const path = require('path')
module.exports = {
entry: {
vendor: ['vue', 'vue-router', 'axios', 'echarts','element-ui','moment','sortablejs'] // 第三方包
},
output: {
filename: '[name].dll.js',
path: path.resolve(__dirname, 'dll'),
library:'[name]_lib'
},
plugins: [
new webpack.DllPlugin({
path: path.resolve(__dirname, 'dll/[name]-manifest.json'),
name: '[name]_lib'
})
]
}
执行一下这个文件,拿到编译后的代码
webpack --config webpack.dll.config.js
webpack 配置
module.exports = {
...
configureWebpack: config => {
config.plugins.push(
new webpack.DllReferencePlugin({
manifest: path.resolve(__dirname, 'dll/vendor-manifest.json')
})
)
config.plugins.push(
new AddAssetHtmlPlugin({ filepath: path.resolve(__dirname,'dll/vendor.dll.js') })
)
}
}
结语
以上就是码云笔记平时针对自己项目或者公司项目累积的一点 vue 项目打包优化知识,也许你有更好的优化点,或者更好的优化方案,欢迎提供案例,一起学习。
以上关于如何使vue项目体积更小打包速度更快呢的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 如何使vue项目体积更小打包速度更快呢
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 如何使vue项目体积更小打包速度更快呢
微信
支付宝