learn-webpack4(六)


Tree Shaking

把没有用到的代码在打包的时候丢弃掉,依赖于 ed6 的模块系统

只需要配置 mode 为”production”,即可显式激活 UglifyjsWebpackPlugin 插件。现在默认就是激活的,不配置 mode 也可以

JS Tree Shaking

不需要安装其他依赖,package,json 都不需要配置

const path = require("path");

module.exports = {
  entry: {
    app: "./src/app.js"
  },
  output: {
    publicPath: __dirname + "/dist/",
    path: path.resolve(__dirname, "dist"),
    filename: "[name].bundle.js"
  },
  mode: "production"
};

打包之后会发现 app.bundle.js 只有函数 a,其他没有用的函数都被丢弃了

第三方库的 Tree Shaking

由于它是依赖 es6 的模块系统,所以使用的第三方库要使用对应的模块系统版本
比如 lodash 不是 es6 的写法,就需要安装 lodash-es

就这样 啦啦啦

CSS Tree Shaking

实现 css 的 tree shaking 需要用到 purifycss 和 glod-all
配置一下 webpack

const path = require("path");
const PurifyCSS = require("purifycss-webpack");
const glob = require("glob-all");
const ExtractTextPlugin = require("extract-text-webpack-plugin");

let extractTextPlugin = new ExtractTextPlugin({
  filename: "[name].min.css",
  allChunks: false
});

let purifyCSS = new PurifyCSS({
  paths: glob.sync([
    // 要做CSS Tree Shaking的路径文件
    path.resolve(__dirname, "./*.html"), // 请注意,我们同样需要对 html 文件进行 tree shaking
    path.resolve(__dirname, "./src/*.js")
  ])
});

module.exports = {
  entry: {
    app: "./src/app.js"
  },
  output: {
    publicPath: __dirname + "/dist/",
    path: path.resolve(__dirname, "dist"),
    filename: "[name].bundle.js",
    chunkFilename: "[name].chunk.js"
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: ExtractTextPlugin.extract({
          fallback: {
            loader: "style-loader",
            options: {
              singleton: true
            }
          },
          use: {
            loader: "css-loader",
            options: {
              minimize: true
            }
          }
        })
      }
    ]
  },
  plugins: [extractTextPlugin, purifyCSS]
};

具体例子就不写了,偷个懒


文章作者: 沐雪
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 沐雪 !
评论
 上一篇
learn-webpack4(七) learn-webpack4(七)
图片处理图片处理 和 Base64 编码 (url-loader)图片压缩 (img-loader)合成雪碧图 (postcss-loader,postcss-sprites) base64 编码和图片压缩// webpack.conf
2017-10-16
下一篇 
learn-webpack4(五) learn-webpack4(五)
SCSS 提取和懒加载使用 ExtractTextPlugin基本的东西和上个 scss 的 demo 一样不同的是需要用到使用 ExtractTextPlugin const path = require("path"); const
2017-10-14
  目录