webpack中DllPlugin配置教程

我们可以通过配置DllPlugin来提高webpack的打包速度。

1. 在项目目录下新建 webpack.config.dll.js ,这个文件用来打包引用的公共包。

const path = require('path');
const webpack = require('webpack');
const DllPlugin = require('webpack/lib/DllPlugin');
module.exports = {

    entry: {
        vendor: ['react', 'react-dom', 'react-router']
    },
    resolve: {
        alias: {
            'react': path.resolve(__dirname, '../node_modules/react/cjs/react.production.min.js'),
            'react-dom': path.resolve(__dirname, '../node_modules/react-dom/cjs/react-dom.production.min.js'),
            'react-router': path.resolve(__dirname, '../node_modules/react-router/umd/react-router.min.js'),
        }
    },
    output: {
        path: path.resolve(__dirname, '../public/static/lib'),
        filename: '[name].js',
        library: '[name]'
    },
    devtool: 'inline-source-map',
    plugins: [
        new webpack.DefinePlugin({
            'process.env': {
                'NODE_ENV': JSON.stringify('production')
            }
        }),
        new DllPlugin({
            filename: '[name].js',
            name: '[name]',
            path: path.resolve(__dirname, '../public/static/lib', '[name].manifest.json'), //描述生成的manifest文件
        }),
        new webpack
            .optimize
            .UglifyJsPlugin({
                compress: {
                    warnings: false, //删除无用代码时不输出警告
                    drop_console: true, //删除所有console语句,可以兼容IE
                    collapse_vars: true, //内嵌已定义但只使用一次的变量
                    reduce_vars: true, //提取使用多次但没定义的静态值到变量
                },
                output: {
                    beautify: false, //最紧凑的输出,不保留空格和制表符
                    comments: false, //删除所有注释
                }
            })
    ]
}

2. 在package.json 中的 script 加入 "dll": "node_modules/.bin/webpack --config config/webpack.config.dll.js"指令。

3. 执行npm run dll,会在/public/static/lib这个目录下生产一个vendor.js

4.然后在webpack配置文件中引用:

const manifest = require('../public/static/dll/vendor.manifest.json');
  ...
plugins: [
    new webpack.DllReferencePlugin({
      manifest
    }),
]

5.在html文件中引入打包的文件

<script src="/static/lib/vendor.js"></script>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 更新:Webpack4已经发布,本篇是基于Webpack3的,请注意。更正:1.package.json中使用了应...
    HermitCarb阅读 4,976评论 2 4
  • GitChat技术杂谈 前言 本文较长,为了节省你的阅读时间,在文前列写作思路如下: 什么是 webpack,它要...
    萧玄辞阅读 14,349评论 7 110
  • 写在开头 先说说为什么要写这篇文章, 最初的原因是组里的小朋友们看了webpack文档后, 表情都是这样的: (摘...
    Lefter阅读 10,711评论 4 31
  • 原文http://www.cnblogs.com/libin-1/p/6596810.html 版本号 vue-c...
    tengrl阅读 9,175评论 0 0
  • 一到寒暑假,我以为这是小朋友玩的假期,是各位学生玩的假期,其实不是,我误会了,这是他们残酷训练的开始。他们...
    D008相信幸福阅读 1,549评论 0 2

友情链接更多精彩内容