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 get和post 方法传值注意事项
Nov 03 Javascript
同一页面多个商品倒计时JS 基于面向对象的javascript
Feb 16 Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
Aug 02 Javascript
JavaScript多图片上传案例
Sep 28 Javascript
Highcharts学习之数据列
Aug 03 Javascript
AngularJS 单元测试(二)详解
Sep 21 Javascript
基本DOM节点操作
Jan 17 Javascript
JS实现的Unicode编码转换操作示例
Apr 28 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
Dec 21 Javascript
Node.js API详解之 string_decoder用法实例分析
Apr 29 Javascript
vue实现折线图 可按时间查询
Aug 21 Javascript
Vue-router编程式导航的两种实现代码
Mar 04 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字符串 ==比较运算符的副作用
2009/10/21 PHP
php基础教程 php内置函数实例教程
2012/08/21 PHP
浅析十款PHP开发框架的对比
2013/07/05 PHP
php5.3 不支持 session_register() 此函数已启用的解决方法
2013/11/12 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
使用 JScript 创建 .exe 或 .dll 文件的方法
2011/07/13 Javascript
jquery解析JSON数据示例代码
2014/03/17 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
jQuery多项选项卡的实现思路附样式及代码
2014/06/03 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
js实现带圆角的两级导航菜单效果代码
2015/08/24 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
vue axios请求拦截实例代码
2018/03/29 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
2018/09/04 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
2018/09/25 Javascript
python线程、进程和协程详解
2016/07/19 Python
pytorch使用指定GPU训练的实例
2019/08/19 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
电气工程及自动化专业自荐书范文
2013/12/18 职场文书
孝老爱亲模范事迹
2014/01/24 职场文书
条幅标语大全
2014/06/20 职场文书
新郎新娘答谢词
2015/01/04 职场文书
创业计划书之网吧
2019/10/10 职场文书
七年级作文之游记
2019/12/11 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书
再见,2019我们不负使命;你好,2020我们砥砺前行
2020/01/03 职场文书