webpack 如何同時(shí)輸出壓縮和未壓縮的文件的實(shí)現(xiàn)步驟
有的時(shí)候我們想要同時(shí)生成壓縮和未壓縮的文件,比如我們構(gòu)建 lib 包的時(shí)候,我們希望用戶能夠使用壓縮過(guò)后的代碼文件作為 cdn 文件,最簡(jiǎn)單的一個(gè)方式就是通過(guò)指定環(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
我們?cè)谑褂玫臅r(shí)候通過(guò)指定環(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"
}
不過(guò)這樣的缺點(diǎn)就是我們需要運(yùn)行兩次。
第二個(gè)方法是安裝unminified-webpack-plugin,通過(guò)這個(gè)插件可以生成沒有壓縮的文件:
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
不過(guò)這個(gè)有個(gè)缺點(diǎn)就是未壓縮的文件沒有 sourcemap。
第三種方法通過(guò)指定多個(gè)打包入口,然后手動(dòng)指定壓縮插件(uglifyjs、terser等)壓縮哪些文件,如我們指定 index.min.js 這個(gè)文件才需要壓縮,配置如下:
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)鍵點(diǎn)如下:

這個(gè)時(shí)候生成的就完美了。
到此這篇關(guān)于webpack 如何同時(shí)輸出壓縮和未壓縮的文件的文章就介紹到這了,更多相關(guān)webpack 如何同時(shí)輸出壓縮和未壓縮的文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
uni-app全局變量的四種實(shí)現(xiàn)方式總結(jié)
在開發(fā)的過(guò)程中,我們不可避免的用到全局變量,比如我們的請(qǐng)求的公共路徑這個(gè)變量,下面這篇文章主要給大家總結(jié)介紹了關(guān)于uni-app全局變量的四種實(shí)現(xiàn)方式,需要的朋友可以參考下2023-10-10
js中各種時(shí)間日期格式之間的轉(zhuǎn)換代碼示例
這篇文章主要介紹了js中各種時(shí)間日期格式之間轉(zhuǎn)換的相關(guān)資料,還有獲取今天的年月日和計(jì)算兩個(gè)日期之間的相差天數(shù)的方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-03-03
echarts實(shí)現(xiàn)中國(guó)地圖下鉆進(jìn)入下一級(jí)(地圖鉆取)
最近在學(xué)習(xí)echarts,今天就來(lái)介紹一下echarts實(shí)現(xiàn)中國(guó)地圖下鉆進(jìn)入下一級(jí),具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08
js控制再次點(diǎn)擊按鈕之間的間隔時(shí)間可防止重復(fù)提交
使用js控制再次點(diǎn)擊按鈕之間的間隔時(shí)間可防止重復(fù)提交,需要的朋友可以參考下2014-08-08
JavaScript+html5 canvas繪制繽紛多彩的三角形效果完整實(shí)例
這篇文章主要介紹了JavaScript+html5 canvas繪制繽紛多彩的三角形效果,以完整實(shí)例形式分析了html5的canvas繪制圖形的相關(guān)技巧,需要的朋友可以參考下2016-01-01
javascript 頁(yè)面只自動(dòng)刷新一次
記得meta標(biāo)簽當(dāng)中有一個(gè)refresh的功能嗎?這是讓瀏覽的頁(yè)面刷新并可以轉(zhuǎn)到相應(yīng)的頁(yè)面,如果刷新本頁(yè)的話就會(huì)造成重復(fù)的刷新,現(xiàn)在我們就試試用腳本來(lái)實(shí)現(xiàn)只讓頁(yè)面刷新一次.2009-07-07

