vue-cli設置預編譯

(轉載文章)
公司的平台功用越堆越多,打包也愈來愈費力,一次十幾分鐘,運維很不爽,so搗鼓了一下預編譯,試了一下也許縮短了七八分鐘,如今覺得還行,如今把它記下來,給須要的童鞋當作參考,也給本身紀錄一下。
項目目次

  • build

    • webpack.dll.conf.js(我們本身新建的預編譯設置)
    • webpack.base.config.js
    • webpack.prod.conf.js
    • ….
  • static
  • package.json
新建文件webpack.dll.conf.js
var webpack = require('webpack');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var path = require('path');
var package = require('../package.json')
var outputPath = '../static/dll'

module.exports = {
  output: {
    path: path.join(__dirname, outputPath),
    filename: 'dll.[name]_[hash:6].js',
    library: '[name]_[hash:6]', // 當前Dll的一切內容都邑存放在這個參數指定變量名的一個全局變量下,注重與DllPlugin的name參數保持一致
  },
  entry: {
      //直接援用package內里的
    lib: Object.keys(package.dependencies),
    //也能夠手動設置
    lib:[
        'jquery',
        'vue',
        'vue-router',
        'swiper'
    ]
  },
  plugins: [
    new webpack.DllPlugin({
      path: path.join(__dirname, outputPath, '[name]-manifest.json'), // 本Dll文件中各模塊的索引,供DllReferencePlugin讀取運用
      name: '[name]_[hash:6]',  // 當前Dll的一切內容都邑存放在這個參數指定變量名的一個全局變量下,注重與參數output.library保持一致
      context: __dirname, // 指定一個途徑作為上下文環境,須要與DllReferencePlugin的context參數保持一致,發起一致設置為項目根目次
    }),
    new ExtractTextPlugin('[name].css'),
    /*全局庫綁定不在此處設置
    new webpack.ProvidePlugin({
      $: 'jquery',
      jQuery: 'jquery',
      'window.jQuery': 'jquery',
      'window.$': 'jquery',
    }),*/
  ],
  
};
webpack.base.conf.js文件設置,在開闢或打包時能援用或避開預編譯下的內容
const webpack = require('webpack')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const manifest = require('../static/dll/lib-manifest.json')

增加插件設置

plugins: [
   //自定義dll
    new webpack.DllReferencePlugin({
        context: __dirname+'/static/dll',
        manifest: manifest,
        dll:`${manifest.name}.js`,
    }),
    //全局庫綁定
    new webpack.ProvidePlugin({
        $: 'jquery',
        jQuery: 'jquery',
        "window.jQuery": 'jquery',
        "window.$": 'jquery',
    }),
],
在webpack.prod.conf.js文件設置打包
var manifest = require('../static/dll/lib-manifest.json')

在HtmlWebpackPlugin設置里增加dll
的援用,以便在index.html里加上我們的預編譯包

new HtmlWebpackPlugin({
      filename: process.env.NODE_ENV === 'testing'
        ? 'index.html'
        : config.build.index,
      template: 'index.html',
      //在index.html內里援用這個dll
      dll:`/static/dll/dll.${manifest.name}.js`,
      inject: true,
      minify: {
        removeComments: true,
        collapseWhitespace: true,
        removeAttributeQuotes: true
        // more options:
        // https://github.com/kangax/html-minifier#options-quick-reference
      },
      // necessary to consistently work with multiple chunks via CommonsChunkPlugin
      chunksSortMode: 'dependency'
    }),
根目次下的 index.html,body的完畢標籤前加上
<script src="<%= htmlWebpackPlugin.options.dll %>" ></script>

末了一步在package.json裡邊增加上預編譯敕令,srcipt裡邊加上一行:

//預編譯敕令
"dll": "webpack --progress --colors --config build/webpack.dll.conf.js",
預編譯

項目根目次下運轉npm run dll,就會在static目次下發明dll這個文件夾,內里就是預編譯的包和預編譯的援用json。

項目地點: https://github.com/JhonMr/pre…

原創文章,轉載請說明出處 https://www.jianshu.com/p/156…

    原文作者:蒼穹海
    原文地址: https://segmentfault.com/a/1190000015366855
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞