分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

The way of Webpack learning (V.) -- css和js的tree shaking

发布时间:2023-09-06 02:14责任编辑:彭小芳关键词:jsWeb

一:基本概念

1、字面意思是摇树,一句话:项目中没有使用的代码会在打包时候丢掉。分为css的tree shaking和js的tree shaking。

2、使用场景:1)常规优化。2)使用第三方库,但是只使用了部分功能。

二:JS tree shaking

在webpack4中已经移除了UglifyJsPlugin,只需要配置mode"production",即可显式激活 UglifyjsWebpackPlugin 插件。

下面说的是webpack3.10.0的实现方法:

(1)常规业务的tree shaking

1、webpack.config.js配置

const path = require(‘path‘);var webpack = require(‘webpack‘);module.exports = { ???entry:{ ???????app:‘./src/app.js‘ ???}, ???output:{ ???????path:path.resolve(__dirname,‘dist‘), ???????publicPath:‘./dist/‘,//设置引入路径在相对路径 ???????filename:‘[name].bundle.js‘, ???}, ???plugins:[ ???????new webpack.optimize.UglifyJsPlugin({ ???????????test: /\.js($|\?)/i ???????}) ???]}

2、其他js文件配置

//a.jsimport {a} from ‘./common‘;a();//common.jsvar a = function(){ ???console.log(‘a‘)}var b = function(){ ???console.log(‘b‘)}var c = function(){ ???console.log(‘c‘)}export {a,b,c}

打包成功后,会发现打包文件只有a函数,删除掉了b和c函数。这就代表JS的tree shaking成功了。

(2)第三方库的tree shaking

不使用lodash插件,安装库对应的模块系统即可。

$ npm i lodash-es --save-dev// app.jsimport { chunk } from "lodash-es";console.log(chunk([1, 2, 3], 2));

备注:如果lodash不支持tree shaking,这个比较特殊。面对这种特殊情况,可以安装babel插件转化lodash。

三:css的tree shaking

以去除项目代码中用不到的 CSS 样式,仅保留被使用的样式代码。

// webpack.config.jsconst path = require("path");const PurifyCSS = require("purifycss-webpack");const glob = require("glob-all");//glob-all 的作用就是帮助 PurifyCSS 进行路径处理,定位要做 Tree Shaking 的路径文件。let purifyCSS = new PurifyCSS({ ?paths: glob.sync([ ???// 要做CSS Tree Shaking的路径文件 ???path.resolve(__dirname, "./*.html"), // 请注意,我们同样需要对 html 文件进行 tree shaking ???path.resolve(__dirname, "./src/*.js") ?])});

  

  

The way of Webpack learning (V.) -- css和js的tree shaking

原文地址:https://www.cnblogs.com/weihuan/p/9642784.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved