webpack 如何同時輸出壓縮和未壓縮的文件的實現(xiàn)步驟
有的時候我們想要同時生成壓縮和未壓縮的文件,比如我們構(gòu)建 lib 包的時候,我們希望用戶能夠使用壓縮過后的代碼文件作為 cdn 文件,最簡單的一個方式就是通過指定環(huán)境變量,比如指定 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
我們在使用的時候通過指定環(huán)境變量就可以打包成不同的版本:
"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
關(guān)鍵點如下:
這個時候生成的就完美了。
到此這篇關(guān)于webpack 如何同時輸出壓縮和未壓縮的文件的文章就介紹到這了,更多相關(guān)webpack 如何同時輸出壓縮和未壓縮的文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript實現(xiàn)的前端AES加密解密功能【基于CryptoJS】
這篇文章主要介紹了JavaScript實現(xiàn)的前端AES加密解密功能,涉及javascript基于CryptoJS插件進行AES加密解密操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2018-08-08js 時間函數(shù)應用加、減、比較、格式轉(zhuǎn)換的示例代碼
時間函數(shù)應用加、減、比較、格式轉(zhuǎn)換等等,具體實現(xiàn)如下,感興趣的朋友可以參考下,希望對大家有所幫助2013-08-08javascript設計模式Constructor(構(gòu)造器)模式
這篇文章主要為大家詳細介紹了javascript設計模式Constructor(構(gòu)造器)模式 ,感興趣的小伙伴們可以參考一下2016-08-08JavaScript之RegExp_動力節(jié)點Java學院整理
正則表達式是一種用來匹配字符串的強有力的武器。它的設計思想是用一種描述性的語言來給字符串定義一個規(guī)則,凡是符合規(guī)則的字符串,我們就認為它“匹配”了,否則,該字符串就是不合法的2017-06-06