webpack

publicPath指定了一個(gè)在瀏覽器中被引用的URL地址。 對(duì)于使用 和 加載器,當(dāng)文件路徑不同于他們的本地磁盤路徑(由path指定)時(shí)候publicPath被用來(lái)作為href或者url指向該文件。這種做法在你需要將靜態(tài)文件放在不同的域名或者CDN上面的時(shí)候是很有用的。 Webpack Dev Server 也是用這個(gè)方式來(lái)讀取文件的。與path搭配使用上[hash]就可以做好緩存方案了。

config.js

output: {? ? path: "/home/proj/public/assets",? ? publicPath: "/assets/"}

index.html


使用CDN 和 hash的例子.

config.js

output: {? ? path: "/home/proj/cdn/assets/[hash]",? ? publicPath: "http://cdn.example.com/assets/[hash]/"}

注: 萬(wàn)一最終輸出文件的publicPath在編譯的時(shí)候不知道,那么你可以不填,動(dòng)態(tài)的在運(yùn)行時(shí)添加也可以。如果在編譯過(guò)程你不知道publicPath你可以忽略他,然后在你的入口文件里面添加上這個(gè)字段就可以了__webpack_public_path__。

__webpack_public_path__ = myRuntimePublicPath// rest of your application entry

output.chunkFilename

非入口chunk的文件名,作為一個(gè)相對(duì)路徑放到output.path里。

[id] 替換chunk的id.

[name] 替換chunk的名字 (or 如果沒(méi)有名字就用id替換).

[hash] 替換編譯的hash.

[chunkhash] 替換chunk的hash.

output.sourceMapFilename

js文件的SourceMap的文件名. 也同樣在 output.path 路徑下面.

[file] 替換js文件的文件名.

[id] 替換chunk的id.

[hash] 替換編譯的hash.

默認(rèn): "[file].map"

output.devtoolModuleFilenameTemplate

在生成的SourceMap里的函數(shù)sources數(shù)組的文件名模板。[resource]替換被Webpack用來(lái)解析文件的路徑,包括最右邊的加載器的請(qǐng)求參數(shù)(如果有的話)。

[resource-path] 和 [resource]一樣但是沒(méi)有參數(shù)的事.

[loaders] 是加載器和最右加載器(顯示加載器)的參數(shù)名的列表[all-loaders] 是加載器和最右加載器(包括自動(dòng)加載器)的參數(shù)名的列表 [id] 替換module的id [hash]替換module標(biāo)識(shí)符的hash[absolute-resource-path] 替換文件絕對(duì)路徑名

默認(rèn) (devtool=[inline-]source-map):"webpack:///[resource-path]"

默認(rèn) (devtool=eval): "webpack:///[resource-path]?[loaders]"

默認(rèn) (devtool=eval-source-map): "webpack:///[resource-path]?[hash]"

也可以定義成函數(shù)而不是字符串模板,該函數(shù)將接受info對(duì)象參數(shù),次對(duì)象有下面幾個(gè)屬性:

identifier

shortIdentifier

resource

resourcePath

absoluteResourcePath

allLoaders

query

moduleId

hash

output.devtoolFallbackModuleFilenameTemplate

和output.devtoolModuleFilenameTemplate一樣,但是用在有重復(fù)module標(biāo)識(shí)符的時(shí)候。

默認(rèn): "webpack:///[resourcePath]?[hash]"

output.devtoolLineToLine

為所有模塊啟用行映射模式,行映射模式用了一個(gè)簡(jiǎn)單的SourceMap,用在了每一行生成的source映射到原始的source,這是一個(gè)性能優(yōu)化,僅用在你的性能需要更佳,你確定輸入行對(duì)應(yīng)生成行的時(shí)候。

true 用在所有模塊(不建議)

可以用類似于 module.loaders 的帶有{test, include, exclude}對(duì)象 來(lái)開啟特定文件.

默認(rèn): disabled

output.hotUpdateChunkFilename

熱替換chunks的文件名. 在output.path目錄里。

[id] 替換chunk的id.

[hash] 替換編譯的hash. (記錄里的最近一個(gè)hash)

默認(rèn): "[id].[hash].hot-update.js"

output.hotUpdateMainFilename

熱替換主文件的的名字。在output.path目錄里。

[hash] 替換編譯的hash. (記錄里的最近一個(gè)hash)

默認(rèn): "[hash].hot-update.json"

output.jsonpFunction

webpack異步加載的JSONP函數(shù). 較短的函數(shù)可以縮小文件的大小,在一個(gè)頁(yè)面里面擁有多個(gè)webpack引用的時(shí)候,需要使用不同的標(biāo)識(shí)符.

默認(rèn): "webpackJsonp"

output.hotUpdateFunction

熱替換時(shí)候一步更新js的jsonp方法.

Default: "webpackHotUpdate"

output.pathinfo

包含了一些module的信息的注解.

require(/* ./test */23)

不要在生產(chǎn)環(huán)境里面使用.

默認(rèn): false

output.library

如果設(shè)置了此項(xiàng), 將會(huì)把bundle打包成lib. output.library 的值就是文件名.

如果你在寫一個(gè)單一的文件庫(kù)的時(shí)候后使用他.

output.libraryTarget

格式化導(dǎo)出的庫(kù):

"var" - 通過(guò)設(shè)置一個(gè)變量導(dǎo)出: var Library = xxx (default)

"this" - 通過(guò)設(shè)置 this的屬性來(lái)導(dǎo)出: this["Library"] = xxx

"commonjs" - 通過(guò)設(shè)置 exports的屬性導(dǎo)出: exports["Library"] = xxx

"commonjs2" - 通過(guò)設(shè)置 module.exports導(dǎo)出: module.exports = xxx

"amd" - 導(dǎo)出為AMD (視情況可通過(guò)output.library來(lái)命名)

"umd" - 導(dǎo)出為 AMD, CommonJS2 或者是頂級(jí)屬性

默認(rèn): "var"

如 output.library 沒(méi)有設(shè)置, 但是 output.libraryTarget 被設(shè)置為了var以外的選項(xiàng), 導(dǎo)出的對(duì)象的每個(gè)屬性都是被復(fù)制的 (除了 amd,commonjs2 和 umd).

output.umdNamedDefine

如果 output.libraryTarget 被設(shè)置為 umd 且 output.library 被 設(shè)置, 設(shè)置該項(xiàng)為 true 將為AMD module 命名.

output.sourcePrefix

在代碼的每一行前面加上此前綴.

默認(rèn): "\t"

output.crossOriginLoading

允許跨域加載chunk.

可能的值有:

false - 禁止.

"anonymous" - 可用.credentials將不隨請(qǐng)求被發(fā)送.

"use-credentials" - 可用.credentials將隨請(qǐng)求被發(fā)送.

更多請(qǐng)查閱MDN

默認(rèn): false

module

影響標(biāo)準(zhǔn) module 的選項(xiàng)(NormalModuleFactory)

module.loaders

自動(dòng)引用的加載器的數(shù)組.

每個(gè)元素有這些選項(xiàng):

test: 必須滿足的條件

exclude: 不滿足的條件

include: 必須滿足條件

loader: 用 "!" 隔開多個(gè)loader

loaders: 多個(gè)loader

可能有一項(xiàng)是正則表達(dá)式(測(cè)試絕對(duì)路徑),包含絕對(duì)路徑的字符串,一個(gè)函數(shù) function(absPath): bool,或者一個(gè)數(shù)組,用"and"結(jié)合

更多:loaders

重要信息:這里的loader解析了他們應(yīng)用相關(guān)的資源,這意味著他們不需要解析配置過(guò)的文件。如果你用npm安裝loaders,node_modules文件夾不在資源文件夾的父目錄中,webpack就找不到這個(gè)loader。你需要把node_modules文件夾的絕對(duì)路徑添加到resolveLoader.root這個(gè)選項(xiàng)中。 (resolveLoader: { root: path.join(__dirname, "node_modules") })

例子:

module: {? loaders: [? ? {? ? ? // "test" is commonly used to match the file extension? ? ? test: /\.jsx$/,? ? ? // "include" is commonly used to match the directories? ? ? include: [? ? ? ? path.resolve(__dirname, "app/src"),? ? ? ? path.resolve(__dirname, "app/test")? ? ? ],? ? ? // "exclude" should be used to exclude exceptions? ? ? // try to prefer "include" when possible? ? ? // the "loader"? ? ? loader: "babel-loader"? ? }? ]}

module.preLoaders, module.postLoaders

語(yǔ)法跟module.loaders很像,前置和后置裝載的數(shù)組loaders.

module.noParse

一個(gè)正則表達(dá)式或者一組正則,不會(huì)匹配到的路徑 它不匹配整個(gè)解析請(qǐng)求。

當(dāng)忽略大的庫(kù)的時(shí)候可以提高性能

該文件預(yù)計(jì)不可調(diào)用require,define或者其他類似的東西,不過(guò)可以用exports和modulle.exports.

自動(dòng)創(chuàng)建上下文默認(rèn)值 module.xxxContextXxx

這有許多選項(xiàng)配置自動(dòng)創(chuàng)建上下文的默認(rèn)值,我們區(qū)分三種情況下自動(dòng)創(chuàng)建的上下文:

exprContext: 一個(gè)作為依賴的表達(dá)式 (如 require(expr))

wrappedContext: 一個(gè)加前綴或者后綴的字符串 (i. e.require("./templates/" + expr))

unknownContext: 一些其他不解析的 require (i. e. require)

四個(gè)選項(xiàng)用來(lái)自動(dòng)創(chuàng)建上下文:

request: 上下文的請(qǐng)求.

recursive: 遞歸: 子目錄需要被遍歷.

regExp: 正則表達(dá)式.

critical: 這種類型的依賴應(yīng)該被視為關(guān)鍵(發(fā)出警告).

選項(xiàng)和默認(rèn)值:

unknownContextRequest = ".", unknownContextRecursive = true, unknownContextRegExp = /^\.\/.*$/,unknownContextCritical = true

exprContextRequest = ".", exprContextRegExp = /^\.\/.*$/,exprContextRecursive = true, exprContextCritical = true

wrappedContextRegExp = /.*/, wrappedContextRecursive = true, wrappedContextCritical = false

注意: module.wrappedContextRegExp 只指完整的正則表達(dá)式的中間部分,剩下的就是從字頭和字尾里產(chǎn)生.

例子:

{? module: {? ? // Disable handling of unknown requires? ? unknownContextRegExp: /$^/,? ? unknownContextCritical: false,? ? // Disable handling of requires with a single expression? ? exprContextRegExp: /$^/,? ? exprContextCritical: false,? ? // Warn for every expression in require? ? wrappedContextCritical: true? }}

resolve

影響解析模塊的選項(xiàng)resolve.

resolve.alias

模塊被其他模塊名和路徑替代.

改配置對(duì)象鍵名為模塊名,鍵值為新的路徑。類似于替換但是更比替換更好。如果該鍵結(jié)尾是只有$的確切匹配(沒(méi)有$)將被替換。

如果鍵值是相對(duì)路徑,它將與該文件中包含的文件相對(duì)

例子: 請(qǐng)求 /abc/entry.js 里面的require ,不同的alias對(duì)比.

alias:require("xyz")require("xyz/file.js"){}/abc/node_modules/xyz/index.js/abc/node_modules/xyz/file.js{ xyz: "/absolute/path/to/file.js" }/absolute/path/to/file.js/abc/node_modules/xyz/file.js{ xyz$: "/absolute/path/to/file.js" }/absolute/path/to/file.jserror{ xyz: "./dir/file.js" }/abc/dir/file.js/abc/node_modules/xyz/file.js{ xyz$: "./dir/file.js" }/abc/dir/file.jserror{ xyz: "/some/dir" }/some/dir/index.js/some/dir/file.js{ xyz$: "/some/dir" }/some/dir/index.js/abc/node_modules/xyz/file.js{ xyz: "./dir" }/abc/dir/index.js/abc/dir/file.js{ xyz: "modu" }/abc/node_modules/modu/index.js/abc/node_modules/modu/file.js{ xyz$: "modu" }/abc/node_modules/modu/index.js/abc/node_modules/xyz/file.js{ xyz: "modu/some/file.js" }/abc/node_modules/modu/some/file.jserror{ xyz: "modu/dir" }/abc/node_modules/modu/dir/index.js/abc/node_modules/dir/file.js{ xyz: "xyz/dir" }/abc/node_modules/xyz/dir/index.js/abc/node_modules/xyz/dir/file.js{ xyz$: "xyz/dir" }/abc/node_modules/xyz/dir/index.js/abc/node_modules/xyz/file.js

index.js 可能會(huì)解析其他的文件,如果設(shè)置了 package.json的話.

/abc/node_modules 也可能解析到/node_modules里.

resolve.root

包含你模塊的目錄(絕對(duì)路徑),通常是一個(gè)目錄數(shù)組,這個(gè)設(shè)置應(yīng)該被用于添加個(gè)人目錄到webpack查找路徑里.

必須是個(gè)絕對(duì)路徑,不要這樣寫./app/modules.

例子:

var path = require('path');// ...resolve: {? root: [? ? path.resolve('./app/modules'),? ? path.resolve('./vendor/modules')? ]}

resolve.modulesDirectories

解析目錄名的一個(gè)數(shù)組到當(dāng)前目錄以及先前的目錄,并且是查找模塊。這個(gè)函數(shù)和node怎么找到node_modules很像。比如如果值為["mydir"],webpack會(huì)查找“./mydir”, “../mydir”, “../../mydir”,等等.

默認(rèn): ["web_modules", "node_modules"]

注意: Passing "../someDir", "app", "." or an absolute path isn't necessary here. Just use a directory name, not a path. Use only if you expect to have a hierarchy within these folders. Otherwise you may want to use the resolve.root option instead.

resolve.fallback

webpack沒(méi)有在resolve.root 或者resolve.modulesDirectories找到的模塊的一個(gè)目錄(或者目錄絕對(duì)路徑的數(shù)組).

resolve.extensions

解析模塊的拓展名的數(shù)組。比如,為了發(fā)現(xiàn)一個(gè)CS文件,你這數(shù)組里應(yīng)該包含字符串".coffee".

默認(rèn): ["", ".webpack.js", ".web.js", ".js"]

重要信息: 設(shè)置這個(gè)選項(xiàng)將會(huì)重寫默認(rèn)值,這意味著webpack不再試著用默認(rèn)的拓展名解析模塊,如果你希望模塊加載的時(shí)候帶著他們的拓展名也可以得到正確額解析(比如require('./somefile.ext')),你需要在你的數(shù)組里添加一個(gè)空字符串。如果你希望模塊加載不帶拓展名(比如require('underscore'))可以解析為“.js”的拓展名。你必須在數(shù)組里包含".js".

resolve.packageMains

在package.json中查找符合這些字段的文件.

默認(rèn): ["webpack", "browser", "web", "browserify", ["jam", "main"], "main"]

resolve.packageAlias

在package.json中查詢對(duì)象里的字段,鍵值對(duì)是按照這個(gè)規(guī)范的別名來(lái)進(jìn)行的

沒(méi)有默認(rèn)值

比如: 比如"browser"會(huì)檢查browser字段.

resolve.unsafeCache

啟用不安全的緩存來(lái)解析一部分文件。改變緩存路徑也許會(huì)導(dǎo)致出錯(cuò)(罕見(jiàn)情況下)。 一個(gè)正則表達(dá)式數(shù)組里,只有一個(gè)正則或只有一個(gè)為true(對(duì)應(yīng)全部文件)是最好的實(shí)踐 。如果解析路徑匹配,就會(huì)被緩存。

默認(rèn): []

resolveLoader

像 resolve 但是是對(duì)于loaders.

// 默認(rèn):{? ? modulesDirectories: ["web_loaders", "web_modules", "node_loaders", "node_modules"],? ? extensions: ["", ".webpack-loader.js", ".web-loader.js", ".loader.js", ".js"],? ? packageMains: ["webpackLoader", "webLoader", "loader", "main"]}

注意,你可以用alias,其他特性和resolve相似。例如 { txt: 'raw-loader' }是 txt!templates/demo.txt用 raw-loader后的結(jié)果.

resolveLoader.moduleTemplates

這是resolveLoader 唯一的屬性.

它描述了嘗試的模塊名稱的替代名

默認(rèn): ["*-webpack-loader", "*-web-loader", "*-loader", "*"]

externals

指定的依賴不會(huì)被webpack解析,但會(huì)成為bundle里的依賴。output.libraryTarget.決定著依賴的類型

值是對(duì)象,字符串,函數(shù),正則,數(shù)組都會(huì)被接受。

字符串:一個(gè)精確匹配的依賴會(huì)變成外部依賴,同意的字符串會(huì)被用于外部依賴。

對(duì)象:如果依賴精確匹配到了對(duì)象的一個(gè)屬性,屬性值就會(huì)被當(dāng)作依賴。屬性值可以包含一個(gè)依賴型的前綴,用一個(gè)空格隔開。如果屬性值為true,則使用該屬性名。如果屬性值為false,外部測(cè)試失敗,這個(gè)依賴是內(nèi)部依賴。見(jiàn)下面的例子。

函數(shù):function(context, request, callback(err, result))。函數(shù)會(huì)在每個(gè)依賴中調(diào)用。如果結(jié)果被傳遞到回調(diào)函數(shù)里,這個(gè)值就會(huì)被像處理對(duì)象屬性值那樣處理。

正則表達(dá)式:每個(gè)被匹配的依賴都會(huì)成為外部依賴。匹配的文本會(huì)被用作外部依賴的請(qǐng)求。因?yàn)檎?qǐng)求是用于生成外部代碼鉤子的確切代碼,如果你匹配到一個(gè)cmd的包(比如 ‘../some/package.js’),相反使用外部function的策略。你可以通過(guò)callback(null, "require('" + request + "')"引入包,這個(gè)包生成module.exports = require('../some/package.js');使用要求在webpack上下文外。

數(shù)組:這個(gè)表的多個(gè)值(遞歸) 例如:

{? ? output: { libraryTarget: "commonjs" },? ? externals: [? ? ? ? {? ? ? ? ? ? a: false, // a is not external? ? ? ? ? ? b: true, // b is external (require("b"))? ? ? ? ? ? "./c": "c", // "./c" is external (require("c"))? ? ? ? ? ? "./d": "var d" // "./d" is external (d)? ? ? ? },? ? ? ? // Every non-relative module is external? ? ? ? // abc -> require("abc")? ? ? ? /^[a-z\-0-9]+$/,? ? ? ? function(context, request, callback) {? ? ? ? ? ? // Every module prefixed with "global-" becomes external? ? ? ? ? ? // "global-abc" -> abc? ? ? ? ? ? if(/^global-/.test(request))? ? ? ? ? ? ? ? return callback(null, "var " + request.substr(7));? ? ? ? ? ? callback();? ? ? ? },? ? ? ? "./e" // "./e" is external (require("./e"))? ? ]}

typevalueresulting import code"var""abc"module.exports = abc;"var""abc.def"module.exports = abc.def;"this""abc"(function() { module.exports = this["abc"]; }());"this"["abc", "def"](function() { module.exports = this["abc"]["def"]; }());"commonjs""abc"module.exports = require("abc");"commonjs"["abc", "def"]module.exports = require("abc").def;"amd""abc"define(["abc"], function(X) { module.exports = X; })"umd""abc"everything above

如果沒(méi)有作為amd/umd的目標(biāo)解析,將會(huì)執(zhí)行amd或者umd的額外值.

注意,如果用umd你可以指定一個(gè)對(duì)象的額外值,屬性為 commonjs, commonjs2, amd和root會(huì)被設(shè)置不同的值.

target

編譯到的目標(biāo)使用環(huán)境

"web" 瀏覽器環(huán)境(默認(rèn))

"webworker" WebWorker

"node" node (使用 require 加載 chunk)

"async-node" node (使用 fs 和 vm 來(lái)加載異步chunk)

"node-webkit" webkit, 使用jsonp加載chunk 但同樣支持 node.js module 加, equire("nw.gui") (實(shí)驗(yàn)性)

"electron"Electron– 支持 require 帶有Electron特性 modules.

bail

將第一個(gè)錯(cuò)誤報(bào)告為嚴(yán)重錯(cuò)誤而不是容忍他。

profile

為每一個(gè)module捕獲定時(shí)信息。

提示: 使用analyze tool來(lái)做可視化分析. --json 或者stats.toJson() 將給出states的JSON數(shù)據(jù).

cache

在多次增量編譯時(shí)候,緩存生成的moudle和chunk來(lái)提高性能。

在watch模式下面默認(rèn)是開啟的.

你可以傳false將它禁止掉.

你也可以傳遞一個(gè)對(duì)象來(lái)開啟他,并且webpack會(huì)利用傳入的對(duì)象作為緩存,這樣你就可以在多次編譯當(dāng)中共享緩存對(duì)象。 注意:不要在不同的選項(xiàng)之間共享緩存。

debug

講loader調(diào)到debug模式.

devtool

選擇開發(fā)工具來(lái)提高debug效率.

eval 文檔上解釋的很明白,每個(gè)模塊都封裝到 eval 包裹起來(lái),并在后面添加 //# sourceURL

source-map 這是最原始的 source-map 實(shí)現(xiàn)方式,其實(shí)現(xiàn)是打包代碼同時(shí)創(chuàng)建一個(gè)新的 sourcemap 文件, 并在打包文件的末尾添加 //# sourceURL 注釋行告訴 JS 引擎文件在哪兒

hidden-source-map 文檔上也說(shuō)了,就是 soucremap 但沒(méi)注釋,沒(méi)注釋怎么找文件呢?貌似只能靠后綴,譬如 xxx/bundle.js 文件,某些引擎會(huì)嘗試去找 xxx/bundle.js.map

inline-source-map 為每一個(gè)文件添加 sourcemap 的 DataUrl,注意這里的文件是打包前的每一個(gè)文件而不是最后打包出來(lái)的,同時(shí)這個(gè) DataUrl 是包含一個(gè)文件完整 souremap 信息的 Base64 格式化后的字符串,而不是一個(gè) url。

eval-source-map 這個(gè)就是把 eval 的 sourceURL 換成了完整souremap 信息的 DataUrl

cheap-source-map 不包含列信息,不包含 loader 的sourcemap,(譬如 babel 的 sourcemap)

cheap-module-source-map 不包含列信息,同時(shí) loader 的 sourcemap 也被簡(jiǎn)化為只包含對(duì)應(yīng)行的。最終的 sourcemap 只有一份,它是 webpack 對(duì) loader 生成的 sourcemap 進(jìn)行簡(jiǎn)化,然后再次生成的。

前綴 @, # 或者 #@ 將執(zhí)行編譯指示風(fēng)格. (默認(rèn) #, 推薦)

可以組合使用. hidden, inline, eval 標(biāo)注樣式是獨(dú)立的.

比如. cheap-module-inline-source-map, cheap-eval-source-map,#@source-map

注意: 如果你的module已經(jīng)包含了SourceMap那么你需要使用source-map-loader將導(dǎo)出的sourceMap合并.

devtool編譯重編譯速度生產(chǎn)環(huán)境支持質(zhì)量eval++++++nogenerated codecheap-eval-source-map+++notransformed code (lines only)cheap-source-map+oyestransformed code (lines only)cheap-module-eval-source-mapo++nooriginal source (lines only)cheap-module-source-mapo-yesoriginal source (lines only)eval-source-map--+nooriginal sourcesource-map----yesoriginal source

例如:

{? ? devtool: "#inline-source-map"}// =>//# sourceMappingURL=...

注意: 下一個(gè)主要版本里面 -d 選項(xiàng) 將改成 cheap-module-eval-source-map

devServer

設(shè)置webpack-dev-server的相關(guān)配置。

例子:

{? ? devServer: {? ? ? ? contentBase: "./build",? ? }}

node

包含了許多node的polyfills或者mock

console: true 或者 false

global: true 或者 false

process: true, "mock" 或者 false

Buffer: true 或者 false

__filename: true (real filename), "mock" ("/index.js") 或者 false

__dirname: true (真實(shí) dirname), "mock" ("/") 或者false

: true, "mock", "empty" 或者 false

// Default:{? ? console: false,? ? global: true,? ? process: true,? ? Buffer: true,? ? __filename: "mock",? ? __dirname: "mock",? ? setImmediate: true}

amd

設(shè)置require.amd和define.amd的值 例如: amd: { jQuery: true } ( 1.x AMD 版本的jQuery)

loader

自定義一些在加載器上下文有用的值。

recordsPath, recordsInputPath,recordsOutputPath

存儲(chǔ)/加載 compiler狀態(tài) 從/到 一個(gè)json文件里面。結(jié)果將會(huì)是一些module和chunk的固定id。

需要是 絕對(duì)路徑,如果recordsInputPath,recordsOutputPath都為undefined,recordsInputPath將被使用。

在多個(gè)編譯請(qǐng)求做熱替換的時(shí)候是需要這個(gè)配置的。

plugins

給編譯器添加額外的插件.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 無(wú)意中看到zhangwnag大佬分享的webpack教程感覺(jué)受益匪淺,特此分享以備自己日后查看,也希望更多的人看到...
    小小字符閱讀 8,358評(píng)論 7 35
  • GitChat技術(shù)雜談 前言 本文較長(zhǎng),為了節(jié)省你的閱讀時(shí)間,在文前列寫作思路如下: 什么是 webpack,它要...
    蕭玄辭閱讀 12,867評(píng)論 7 110
  • 學(xué)習(xí)流程 參考文檔:入門Webpack,看這篇就夠了Webpack for React 一. 簡(jiǎn)單使用webpac...
    Jason_Zeng閱讀 3,251評(píng)論 2 16
  • webpack 介紹 webpack 是什么 為什么引入新的打包工具 webpack 核心思想 webpack 安...
    yxsGert閱讀 6,660評(píng)論 2 71
  • 不知從何時(shí)起,我是這么的無(wú)趣,這么的憂寂。時(shí)間走了這么長(zhǎng),總讓我惶惶不安,我知道我有些孤僻,我知道我有些懶惰,可是...
    阿曰啊閱讀 279評(píng)論 3 1

友情鏈接更多精彩內(nèi)容