亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

webpack4實現不同的導出類型

2024-05-06 16:49:42
字體:
來源:轉載
供稿:網友

webpack最基本的配置就是導出一個靜態的對象,但是由于我們業務比較復雜,往往需要動態配置webpack以構建目標代碼。

幸運的是,webpack為我們提供了動態配置webpack文件的支持。

下面介紹一下webpack的多種配置類型。

1、導出為一個對象(Object)

webpack最常見的配置類型為導出一個對象,即

const path = require('path')module.exports = { entry: './src/index.js', output: {  filename: 'bundle.js',  path: path.resolve(__dirname, 'dist') }}

2、導出為一個函數(Function)

很明顯,導出為一個對象缺乏靈活性。若我們想要根據不同的開發環境構建不一樣的代碼。此時,webpack配置也應該隨著改變。

所以,webpack支持我們導出一個函數,這個導出函數的默認參數為env和argv。其中,env為環境對象,我們可以通過命令行對其進行配置(webpack可自動讀取該配置),argv為命令行輸入參數的map。

(1)--env 參數支持各種各樣的配置:

 

Invocation Resulting environment notes
webpack --env prod "prod" env為String類型,賦值為prod
webpack --env.prod { prod: true } env為對象,prod是對象的屬性, 默認為true
webpack --env.prod=1 { prod: 1 } env為對象,prod是對象的屬性,賦值為1
webpack --env.prod=foo { prod: "foo" } env為對象,prod是對象的屬性,賦值為foo
webpack --env.prod --env.min [ prod: true, min: true ] env為對象,prod和min是對象的屬性,默認為true。--env命令可以多次使用,不會被覆蓋
webpack --env.prod --env min [{ prod: true }, "min"] env 為數組,第一個數組元素為對象,prod是其屬性,默認為true。第二個數組元素為String,賦值為min
webpack --env.prod=foo --env.prod=bar { prod: ["foo", "bar"] } env為對象,prod是對象的屬性。prod是一個數組,第一個數組元素為"foo",第二個數組對象為"bar"。注意,即使這種情況下,prod值不會被覆蓋,而是轉化為數組。

 

(2)argv為webpack命令行參數的map。

例如,我們在命令行鍵入webpack --entry-filename=index,則在webpack配置文件中,我們可以通過argv["entry-filename"]來獲取命令行配置的值。即:

argv["entry-filename"] === "index"

(3)舉個例子:

const path = require('path')module.exports = function (env, argv) { return {  entry: './src/' + argv['entry-filename'] + '.js',  output: {   filename: 'bundle.js',   path: path.resolve(__dirname, 'dist'),  },  devtool: env.prod ? 'source-map' : 'eval' }}

在命令行中,我們需要自鍵入

webpack --env.prod --entry-filename=index

注意,凡是webpack配置文件中使用到的命令行參數,例如argv["entry-filename"],均需要在命令行傳入,一個不能遺漏,否則webpack會報錯:Config did not export an object

3、導出為一個Promise對象

除了導出為一個函數,webpack還支持我們異步獲取配置變量來配置相關文件。(真是很強大?。?/p>

為了體現異步獲取數據的過程,我們把webpack.config.js修改為以下內容:

const path = require('path')module.exports = () => { return new Promise((resolve, reject) => {  setTimeout(() => {   resolve({    entry: './src/index.js',    output: {     filename: 'bundle.js',     path: path.resolve(__dirname, 'dist')    }   })  }, 1000) })}

4、導出多個配置

修改webpack.config.js的內容如下:

const path = require('path')module.exports = [ {  name: 'index',  entry: './src/index.js',  output: {   filename: 'index.js',   path: path.resolve(__dirname, 'dist')  },  mode: 'production' }, {  name: 'main',  entry: './src/main.js',  output: {   filename: 'main.js',   path: path.resolve(__dirname, 'dist')  } }]

當我們運行webpack時,以上多個配置都會被構建出來。如果我們只想構建其中一份代碼,那么只需要傳入--config-name參數即可:

webpack --config-name=index

webpack --config-name=main

如上所示,我們可以分別構建出name為index、name為main的配置對象所配置的內容。

以上配置常見的場景有:npm包利用不同的模塊語法構建不同的輸出文件,供不同的項目進行使用:

module.exports = [{ output: {  filename: './dist-amd.js',  libraryTarget: 'amd' }, name: 'amd', entry: './app.js', mode: 'production',},{ output: {  filename: './dist-commonjs.js',  libraryTarget: 'commonjs' }, name: 'commonjs', entry: './app.js', mode: 'production',}]

總而言之,webpack為我們提供了眾多靈活的配置解決方案。當我們遇到復雜項目的時候,只要明確心中需求,大多數都能夠找到對應的解決方案。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97在线观看视频国产| 亚洲男人天堂网| 色诱女教师一区二区三区| 国产精品久久久久高潮| 中文字幕免费精品一区高清| 91社区国产高清| 欧美精品免费播放| 精品国产网站地址| 亚洲一区二区三区视频| www.久久久久久.com| 亚洲精品成人久久电影| 久久亚洲春色中文字幕| 亚洲国产精品va| 久久久视频在线| 亚洲久久久久久久久久| 超碰91人人草人人干| 欧美激情国产高清| 国产成人精品久久久| 亚洲成人1234| 综合av色偷偷网| 91精品视频一区| 精品偷拍一区二区三区在线看| 国产日韩欧美综合| 精品国产拍在线观看| 国产精品视频最多的网站| 亚洲国产欧美在线成人app| 亚洲国产日韩精品在线| 欧美美女18p| 亚洲大胆人体av| 国产精品久久久久久久久男| 日韩av在线网| 国产91精品最新在线播放| 视频直播国产精品| 亚洲日本中文字幕免费在线不卡| 欧美日韩国产一中文字不卡| 国产精品自产拍高潮在线观看| 欧美日韩中文字幕日韩欧美| 伊人久久久久久久久久久久久| 91久久久久久久一区二区| 国产一区二区三区在线| 亚洲奶大毛多的老太婆| 91中文字幕在线观看| 国产成人免费av| 疯狂蹂躏欧美一区二区精品| 亚洲欧美国产一本综合首页| 日韩视频第一页| 一区二区三区 在线观看视| 福利视频第一区| 亚洲娇小xxxx欧美娇小| 91精品综合久久久久久五月天| 久久精品久久久久| 亚洲色图18p| 久久激情五月丁香伊人| 中文字幕在线观看亚洲| 欧美激情精品久久久久久大尺度| 日韩美女视频中文字幕| 国产精品稀缺呦系列在线| 亚洲欧美国产日韩中文字幕| 91日本视频在线| 韩剧1988在线观看免费完整版| 国内精品一区二区三区四区| 97国产suv精品一区二区62| 久久人人爽国产| 成人激情黄色网| 欧美激情中文字幕乱码免费| 国产精品丝袜久久久久久不卡| 色狠狠久久aa北条麻妃| 欧美激情精品久久久久久久变态| 亚洲自拍中文字幕| 精品伊人久久97| 成人高清视频观看www| 久久99久久99精品免观看粉嫩| 久久亚洲精品国产亚洲老地址| 久久亚洲精品视频| 国产精品夜色7777狼人| 亚洲va欧美va在线观看| 91九色在线视频| 欧美又大又粗又长| 精品国产自在精品国产浪潮| 国产精品一区二区三区毛片淫片| 日韩av三级在线观看| 久久久人成影片一区二区三区| 久久av在线看| 日韩av资源在线播放| 欧美激情综合色| 日本高清+成人网在线观看| 欧美成人h版在线观看| 97在线精品视频| 日韩av三级在线观看| 久久精品国产欧美亚洲人人爽| 少妇高潮久久久久久潘金莲| 成人一区二区电影| 欧美精品福利视频| 亚洲欧美在线免费观看| 亚洲欧美一区二区精品久久久| 欧美性猛交xxxx富婆| 日韩美女中文字幕| 国产精品99久久久久久人| 亚洲人av在线影院| 欧美激情一二区| 欧美劲爆第一页| 91精品国产91久久久久福利| 久久五月天色综合| 国产有码一区二区| 97精品国产97久久久久久春色| 国产一区二区丝袜| 久久香蕉国产线看观看av| 久久久影视精品| 久久精品久久久久久| 亚洲人成网站色ww在线| 欧美老少配视频| 国产亚洲精品美女久久久| 久久久中文字幕| 久久久亚洲影院你懂的| 国产精品一区久久久| 久热精品视频在线免费观看| 国产精品久久久久久一区二区| 成人午夜在线视频一区| 欧美激情亚洲自拍| 中文字幕亚洲综合| 亚洲社区在线观看| 亚洲激情第一页| 日韩av123| 日韩视频免费观看| 狠狠躁夜夜躁人人爽天天天天97| 国产精品白丝av嫩草影院| 国产精品久久久久久久7电影| 国产精品久久久久久久一区探花| 欧美激情亚洲一区| 久久久久久久久久久av| 色琪琪综合男人的天堂aⅴ视频| 粉嫩av一区二区三区免费野| 国产美女扒开尿口久久久| 色婷婷综合成人| 亚洲精品网址在线观看| 亚洲精品国产精品国自产在线| 国产精品视频久久久久| 欧美寡妇偷汉性猛交| 欧美寡妇偷汉性猛交| 久久伊人色综合| 日本欧美精品在线| 美女999久久久精品视频| 国产情人节一区| 亚洲精品99久久久久中文字幕| 国产亚洲人成a一在线v站| 久久久久免费精品国产| 日韩在线激情视频| 国产精欧美一区二区三区| 欧美电影在线免费观看网站| 欧美巨猛xxxx猛交黑人97人| 日韩精品中文字幕在线播放| 国内精品久久久久久中文字幕| 日韩黄色高清视频| 成人性生交大片免费看视频直播| 亚洲美女精品成人在线视频| 亚洲精品一区中文字幕乱码| 久久成人一区二区| 国产一区二区三区在线播放免费观看| 亚洲欧洲在线视频| 热久久视久久精品18亚洲精品| 亚洲成人av资源网| 国产成人亚洲综合青青| 成人a级免费视频| 日韩亚洲欧美中文在线|