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è)插件可以生成沒(méi)有壓縮的文件:
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)就是未壓縮的文件沒(méi)有 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)文章
JavaScript實(shí)現(xiàn)的前端AES加密解密功能【基于CryptoJS】
這篇文章主要介紹了JavaScript實(shí)現(xiàn)的前端AES加密解密功能,涉及javascript基于CryptoJS插件進(jìn)行AES加密解密操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-08-08js 時(shí)間函數(shù)應(yīng)用加、減、比較、格式轉(zhuǎn)換的示例代碼
時(shí)間函數(shù)應(yīng)用加、減、比較、格式轉(zhuǎn)換等等,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08JavaScript實(shí)現(xiàn)限時(shí)秒殺功能
各種電商活動(dòng)都喜換選擇限時(shí)秒殺活動(dòng)形式,這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)限時(shí)秒殺功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08javascript設(shè)計(jì)模式Constructor(構(gòu)造器)模式
這篇文章主要為大家詳細(xì)介紹了javascript設(shè)計(jì)模式Constructor(構(gòu)造器)模式 ,感興趣的小伙伴們可以參考一下2016-08-08JavaScript之RegExp_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
正則表達(dá)式是一種用來(lái)匹配字符串的強(qiáng)有力的武器。它的設(shè)計(jì)思想是用一種描述性的語(yǔ)言來(lái)給字符串定義一個(gè)規(guī)則,凡是符合規(guī)則的字符串,我們就認(rèn)為它“匹配”了,否則,該字符串就是不合法的2017-06-06JavaScript中7種位運(yùn)算符在實(shí)戰(zhàn)的妙用
位運(yùn)算是在數(shù)字底層(即表示數(shù)字的 32 個(gè)數(shù)位)進(jìn)行運(yùn)算的,下面這篇文章主要給大家介紹了關(guān)于JavaScript中7種位運(yùn)算符在實(shí)戰(zhàn)的妙用,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06