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 相关文章推荐
jQuery的DOM操作之删除节点示例
Jan 03 Javascript
js对象基础实例分析
Jan 13 Javascript
Js实现简单的小球运动特效
Feb 18 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
Aug 02 Javascript
Node.js的基本知识简单汇总
Sep 19 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
Oct 18 Javascript
JS实现HTML标签转义及反转义
Apr 14 Javascript
Node.js五大应用性能技巧小结(必须收藏)
Aug 09 Javascript
15个顶级开源JavaScript框架和库
Oct 10 Javascript
Vue中使用canvas方法总结
Feb 12 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
Jan 05 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
Jan 03 Vue.js
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
收藏的PHP常用函数 推荐收藏保存
2010/02/21 PHP
PHP输出缓存ob系列函数详解
2014/03/11 PHP
CI框架安全类Security.php源码分析
2014/11/04 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
2019/04/02 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
php中数组最简单的使用方法
2020/12/27 PHP
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
JS根据变量保存方法名并执行方法示例
2014/04/04 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
2017/01/10 Javascript
JS中input表单隐藏域及其使用方法
2017/02/13 Javascript
vue2.0安装style/css loader的方法
2018/03/14 Javascript
angularjs请求数据的方法示例
2019/08/06 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
微信小程序云开发获取文件夹下所有文件(推荐)
2019/11/14 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
基于JavaScript实现贪吃蛇游戏
2020/03/16 Javascript
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
2018/01/24 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
python tkinter窗口最大化的实现
2019/07/15 Python
Python爬虫防封ip的一些技巧
2020/08/06 Python
python用Configobj模块读取配置文件
2020/09/26 Python
迪卡侬比利时官网:Decathlon比利时
2019/12/28 全球购物
电焊工工作岗位职责
2014/02/06 职场文书
文明餐桌活动方案
2014/02/11 职场文书
搞笑爱情保证书
2014/04/29 职场文书
班级年度安全计划书
2014/05/01 职场文书
个人授权委托书范本格式
2014/10/12 职场文书
2015年教师新年寄语
2014/12/08 职场文书
恋恋笔记本观后感
2015/06/16 职场文书
单位同意报考证明
2015/06/17 职场文书