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 相关文章推荐
javascript 时间比较实现代码
Oct 28 Javascript
jquery 日期控件datepicker属性详细解析
Nov 08 Javascript
js验证框架实现代码分享
May 18 Javascript
防止Node.js中错误导致进程阻塞的办法
Aug 11 Javascript
jQuery实现优雅的弹窗效果(6)
Feb 08 Javascript
Vue实现typeahead组件功能(非常靠谱)
Aug 26 Javascript
微信小程序实现多宫格抽奖活动
Apr 15 Javascript
JavaScript中Object基础内部方法图
Feb 05 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
May 07 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
Nov 17 Javascript
vue实现输入框自动跳转功能
May 20 Javascript
vue实现公共方法抽离
Jul 31 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
PHP基于单例模式实现的数据库操作基类
2016/01/15 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
2016/04/12 PHP
对PHP依赖注入的理解实例分析
2016/10/09 PHP
jquery pagination插件实现无刷新分页代码
2009/10/13 Javascript
jQuery .tmpl(), .template()学习资料小结
2011/07/18 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
JavaScript 节流函数 Throttle 详解
2016/07/04 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
JS路由跳转的简单实现代码
2017/09/21 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
js实现纯前端压缩图片
2020/11/16 Javascript
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
Python 限制线程的最大数量的方法(Semaphore)
2019/02/22 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
Python3打包exe代码2种方法实例解析
2020/02/17 Python
AVIS安飞士奥地利租车官网:提供奥地利、欧洲和全世界汽车租赁
2016/11/29 全球购物
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
BASIC HOUSE官方旗舰店:韩国著名的服装品牌
2018/09/27 全球购物
JAVA中的关键字有什么特点
2014/03/07 面试题
党员群众路线承诺书
2014/05/20 职场文书
大学生简短的自我评价
2014/09/12 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
三八妇女节慰问信
2015/02/14 职场文书
信访维稳承诺书
2015/05/04 职场文书
导游词之沈阳植物园
2019/11/30 职场文书