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实现的页内搜索代码
May 23 Javascript
基于jquery的cookie的用法
Jan 10 Javascript
html中table数据排序的js代码
Aug 09 Javascript
Jquery给基本控件的取值、赋值示例
May 23 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
Aug 22 Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
Mar 25 Javascript
JS判断元素是否在数组内的实现代码
Mar 30 Javascript
js倒计时简单实现代码
Aug 11 Javascript
EditPlus中的正则表达式 实战(4)
Dec 15 Javascript
如何在wxml中直接写js代码(wxs)
Nov 14 Javascript
修改vue源码实现动态路由缓存的方法
Jan 21 Javascript
node+multer实现图片上传的示例代码
Feb 18 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
php下intval()和(int)转换使用与区别
2008/07/18 PHP
深入解析phpCB批量转换的代码示例
2013/06/27 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
PHP表单数据写入MySQL数据库的代码
2016/05/31 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
php编程实现简单的网页版计算器功能示例
2017/04/26 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
Aster vs KG BO3 第三场2.19
2021/03/10 DOTA
IE和Firefox下event事件杂谈
2009/12/18 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
node.js解决获取图片真实文件类型的问题
2014/12/20 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
vue中添加mp3音频文件的方法
2018/03/02 Javascript
Javascript实现运算符重载详解
2018/04/07 Javascript
layui框架与SSM前后台交互的方法
2019/09/12 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
Unicode和Python的中文处理
2017/03/19 Python
python 列表,数组,矩阵两两转换tolist()的实例
2018/04/04 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
2018/04/28 Python
Python中extend和append的区别讲解
2019/01/24 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
UI自动化定位常用实现方法代码示例
2020/10/27 Python
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
以太网Ethernet IEEE802.3
2013/08/05 面试题
数学考试作弊检讨书300字
2015/02/16 职场文书
人事任命通知书
2015/04/21 职场文书
初婚初育证明范本
2015/06/18 职场文书
致接力运动员加油稿
2015/07/21 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
入团申请书格式
2019/06/20 职场文书