webpack 如何同时输出压缩和未压缩的文件的实现步骤


Posted in Javascript onJune 05, 2020

有的时候我们想要同时生成压缩和未压缩的文件,比如我们构建 lib 包的时候,我们希望用户能够使用压缩过后的代码文件作为 cdn 文件,最简单的一个方式就是通过指定环境变量,比如指定 MINIFY,如下:

const path = require('path')

const isMinify = process.env.MINIFY

/**
 * @type {import('webpack').Configuration}
 */
const config = {
 entry: {

  index: './src/index.js'
 },
 output: {
  filename: isMinify ? '[name].min.js' : '[name].js',
  path: path.join(__dirname, 'dist')
 },
 devtool: 'cheap-source-map',
 optimization: {
  minimize: isMinify ? true : false
 }
}

module.exports = config

我们在使用的时候通过指定环境变量就可以打包成不同的版本:

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "build:min": "MINIFY=1 webpack --config=webpack.config.js",
  "build": "webpack --config=webpack.config.js"
 }

不过这样的缺点就是我们需要运行两次。

第二个方法是安装unminified-webpack-plugin,通过这个插件可以生成没有压缩的文件:

const path = require('path')
const UnminifiedWebpackPlugin = require('unminified-webpack-plugin');

/**
 * @type {import('webpack').Configuration}
 */
const config = {
 entry: {
  index: './src/index.js',
 },
 output: {
  filename: '[name].min.js',
  path: path.join(__dirname, 'dist')
 },
 devtool: 'cheap-source-map',
 plugins: [
  new UnminifiedWebpackPlugin({})
 ]
}

module.exports = config

不过这个有个缺点就是未压缩的文件没有 sourcemap。

第三种方法通过指定多个打包入口,然后手动指定压缩插件(uglifyjs、terser等)压缩哪些文件,如我们指定 index.min.js 这个文件才需要压缩,配置如下:

const path = require('path')
const TerserWebpackPlugin = require('terser-webpack-plugin');

/**
 * @type {import('webpack').Configuration}
 */
const config = {
 entry: {
  index: './src/index.js',
  'index.min': './src/index.js'
 },
 output: {
  filename: '[name].js',
  path: path.join(__dirname, 'dist')
 },
 devtool: 'cheap-source-map',
 optimization: {
  minimize: true,
  minimizer: [
   new TerserWebpackPlugin({
    include: /min/,
    sourceMap: true
   })
  ]
 }
}

module.exports = config

关键点如下:

webpack 如何同时输出压缩和未压缩的文件的实现步骤

这个时候生成的就完美了。

到此这篇关于webpack 如何同时输出压缩和未压缩的文件的文章就介绍到这了,更多相关webpack 如何同时输出压缩和未压缩的文件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
js模拟类继承小例子
Jul 17 Javascript
javascript中关于执行环境的杂谈
Aug 14 Javascript
javascript浏览器兼容教程之事件处理
Jun 09 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
Jun 01 Javascript
vue中用动态组件实现选项卡切换效果
Mar 25 Javascript
原生js封装添加class,删除class的实例
Nov 06 Javascript
vue 通过下拉框组件学习vue中的父子通讯
Dec 19 Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
Apr 09 Javascript
vue.js实现的经典计算器/科学计算器功能示例
Jul 11 Javascript
Vue.js 实现数据展示全部和收起功能
Sep 05 Javascript
JavaScript实现轮播图效果代码实例
Sep 28 Javascript
如何用JS模拟实现数组的map方法
Jul 30 Javascript
vue使用nprogress加载路由进度条的方法
Jun 04 #Javascript
JS+canvas五子棋人机对战实现步骤详解
Jun 04 #Javascript
JS删除数组指定值常用方法详解
Jun 04 #Javascript
Vue项目接入Paypal实现示例详解
Jun 04 #Javascript
Paypal支付不完全指北
Jun 04 #Javascript
微信小程序学习总结(五)常见问题实例小结
Jun 04 #Javascript
vue样式穿透 ::v-deep的具体使用
Jun 04 #Javascript
You might like
做个自己站内搜索引擎
2006/10/09 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
2013/09/28 PHP
PHP获取表单所有复选框的值的方法
2014/08/28 PHP
php实现的树形结构数据存取类实例
2014/11/29 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
Yii2.0框架模型多表关联查询示例
2019/07/18 PHP
php在linux环境中如何使用redis详解
2020/12/15 PHP
23个超流行的jQuery相册插件整理分享
2011/04/25 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
jQuery验证表单格式的使用方法
2017/01/10 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
ES6 十大特性简介
2020/12/09 Javascript
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
详解 Python 与文件对象共事的实例
2017/09/11 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
2019/09/05 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
2019/09/07 Python
Python实现寻找回文数字过程解析
2020/06/09 Python
英国领先的独立酒精饮料零售商:DrinkSupermarket
2021/01/13 全球购物
大学生毕业求职的自我评价
2013/09/29 职场文书
大专生自我评价
2014/01/28 职场文书
会计自我鉴定
2014/02/04 职场文书
中学生学雷锋活动心得体会
2014/03/10 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
2015年党员个人自我评价
2015/03/03 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
研讨会致辞
2015/07/31 职场文书
那些美到让人窒息的诗句,值得你收藏!
2019/08/20 职场文书
导游词之介休绵山
2019/12/31 职场文书
你真的会用Mysql的explain吗
2022/03/31 MySQL