Vue-cli3.0 패키지 최적화 실천

2166 단어
4
  • gzip 압축 vue.config.js
  • 	npm i --save-Dev compression-webpack-plugin
        const CompressionWebpackPlugin = require('compression-webpack-plugin')
    	const productionGzipExtensions = /\.(js|css|json|txt|html|ico|svg)(\?.*)?$/i
    	module.exports = {
    		configureWebpack: config => {
    		    if (process.env.NODE_ENV === 'production') {
    		      const plugins = []
    		      plugins.push(
    		        new CompressionWebpackPlugin({
    		          filename: '[path].gz[query]',
    		          algorithm: 'gzip',
    		          test: productionGzipExtensions,
    		          threshold: 10240,
    		          minRatio: 0.8
    		        })
    		      )
    	     	 config.plugins = [...config.plugins, ...plugins]
        		}
     	 }
    }
    

    nginx.conf
    http{
    	  gzip on; 
          gzip_static on;
          gzip_buffers 4 16k;
          gzip_comp_level 5;
          gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    }
    

    2. 콘솔 플러그인 제거
    const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
    plugins.push(
      new UglifyJsPlugin({
        uglifyOptions: {
          compress: {
            warnings: false,
            drop_console: true,
            drop_debugger: false,
            pure_funcs: ['console.log'] //  console
          }
        },
        sourceMap: false,
        parallel: true
      })
    )
    

    3. 불필요한 css를 제거한다(테스트 후 scoped에 쓰지 않은 스타일을 삭제한 것 같다...)
    plugins.push(
            new PurgecssPlugin({
              paths: glob.sync([
                path.join(__dirname, './src/index.html'),
                path.join(__dirname, './**/*.vue'),
                path.join(__dirname, './src/**/*.js')
              ])
            })
          )
    

    4. cdn에서 파일을 불러오기(포장할 때 몇 k가 작아서 개발 환경을 어떻게 맞추는지 몰라요)vue,router,vuex,cdn을 통해 가져오고 각 파일에 추가
    if(process.env.NODE_ENV === 'production'){
    //vue.use(Router)
    //vue.use(vuex)
    }
    config.externals: {
                vue: "Vue",
                vuex: "Vuex",
                "vue-router": "VueRouter",
            }
    

    2019.3.12

    좋은 웹페이지 즐겨찾기