vue打包配置的详细说明【config/index.js的build部份】

一、vue打包配置的详细说明【config/index.js的build部份】

index: path.resolve(__dirname, '../dist/index.html') 

打包生成的文件路径
__dirname:代码所在路径,字符串格式

assetsRoot: path.resolve(__dirname, '../dist'),

包含应用程序的所有静态资产的根目录(绝对路径)

assetsSubDirectory: 'static',

被编译之后的资源文件都会放在上面的assetsRoot中,因为本地缓存的静态资源,也就是代码目录static中的文件最好不要混淆在assetsRoot中,因此指定该目录;assetsRoot的路径是【E:\web\dist】那么assetsSubDirectory就是【E:\web\dist\static】

assetsPublicPath: '/',

这个是通过http服务器运行的url路径。在大多数情况下,这个是根目录(/)。如果你的后台框架对静态资源url前缀要求,你仅需要改变这个参数。在内部,这个是被webpack当做output.publicPath来处理的。
后台有要求的话一般要加上./ 或者根据具体目录添加,不然引用不到静态资源

productionSourceMap: false,

构建生成环境时是否生成源码文件,建议使用false可以大大减少打包文件的大小

productionGzip: false,
productionGzipExtensions: ['js', 'css'],

二、是否打开Gzip以及什么情况下需要开启Gzip以及开启Gzip的好处?

  1. 后端开启gzip,就会将相应文件压缩,浏览器就能识别,可以起到优化的效果(前提是后端得配合使用gzip,才有开启的必要)
  2. 使用gzip需要先安装依赖
    npm install --save-dev compression-webpack-plugin
  3. 开启的好处:
    比如nginx给你返回js文件的时候,会判断是否开启gzip,然后压缩后再还给浏览器。但是nginx其实会先判断是否有.gz后缀的相同文件,有的话直接返回,nginx自己不再进行压缩处理。
    而压缩是要时间的!不同级别的压缩率花的时间也不一样。
    所以提前准备gz文件,可以更加优化。而且你可以把压缩率提高点,这样带宽消耗会更小

三、打包优化的一些整理

  1. 路由设置懒加载
  2. 关闭SourceMap
  3. 后端未使用Gzip时关闭
  4. 不是全局使用的共用组件,按需引入
  5. 在【build/webpack.base.conf.js】文件中的resolve文件中添加modules,可以有效提高大型项目的打包时间,亲测打包时间缩短了12s以上
resolve: {
    extensions: ['.js', '.vue', '.less', '.css', '.scss', '.json'],
    alias: {
        'vue$': 'vue/dist/vue.esm.js',
        '@': resolve('src'),
        'sysStatic': resolve('src/assets'),
        'sysComponents': resolve('src/components'),
        'sysPage': resolve('src/page'),
        'jquery': 'jquery',
        'jquery-ui': 'jquery-ui'
    },
    modules: [
        resolve('src'),
        resolve('node_modules')
      ],
},
  1. 查看打包报告,优化代码文件的占用率以及执行速度
npm run build --report
  1. 增加 webpack-parallel-uglify-plugin来替换原有的UglifyJsPlugin,下面是使用新的打包方式流程,但是由于webpack-parallel-uglify-plugin只支持ES5的语法,element-ui有部分ES6的东西,会导致打包出错,上网搜索了一下,可以参照【https://www.cnblogs.com/huen2015/p/10986580.html】这个博客解决,但是因为我们的项目还引用了G6实现流程图,这样解决还是无效,感觉没有必要因为单纯的提高打包速度而引入更多的依赖,因此最后弃置此打包优化方案!!

    1. 安装依赖
npm i webpack-parallel-uglify-plugin
  1. 在build/webpack.prod.conf.js 文件,做如下修改
    首先注释掉本地应用的原有的uglifyJsPlugin,引用新的ParallelUglifyPlugin
// const UglifyJsPlugin = require("uglifyjs-webpack-plugin")
const ParallelUglifyPlugin = require("webpack-parallel-uglify-plugin")

其次,将现有的uglifyJsPlugin改为ParallelUglifyPlugin

// js mini
// new UglifyJsPlugin({
//   cache: true,
//   parallel: true,
//   sourceMap: config.build.productionSourceMap // set to true if you want JS source maps
// }),
// 增加 webpack-parallel-uglify-plugin来替换原有的UglifyJsPlugin
new ParallelUglifyPlugin({
    cacheDir: '.cache/',
    uglifyJS:{
	    output: {
	        comments: false
	    },
	    compress: {
	        warnings: false
	    }
    }
}),

百度时发现有些小伙伴使用该组件打包会报错,我这里没有报错,但是把解决方案贴一下吧,日后自己再出错也好找~~

// 将:
compress: {
	warnings: false
}
// 改为:
warnings: false
new ParallelUglifyPlugin({
    cacheDir: '.cache/',
    uglifyJS:{
    output: {
        comments: false
    },
    warnings: false
    }
}),
发布了20 篇原创文章 · 获赞 6 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ying940718/article/details/103877141
今日推荐