我正在使用 webpack 5 (5.53.0) 并且只想將源映射生成到我自己的代碼(不包括供應商)到不同的輸出目錄。這樣做的動機是,我希望始終將源映射發布到不同的服務器,該服務器只能由內部網路訪問(公眾無法訪問)。
為了在我的和供應商之間拆分代碼,我利用 splitChunks.chunks
splitChunks: {
chunks: "all"
}
由于devtool不支持排除,我遵循了webpack 檔案中的提示
除了使用該
devtool選項,您還可以SourceMapDevToolPlugin直接使用,因為它有更多選項。切勿同時使用devtool選項和插件。
使用SourceMapDevToolPlugin我使用了filename和exclude選項如下
new webpack.SourceMapDevToolPlugin({
filename: "maps/[name].[fullhash].bundle.js.map",
publicPath: "https://private-server.com",
exclude: [/vendors~main.*.bundle.js/]
})
當我運行時webpack --mode production,dist輸出目錄有 2 個捆綁檔案 - 一個是我的,一個是供應商的
$ ls -x1 dist/*.js dist/maps/*.js.map
dist/5.95feeb62d4fe21871683.bundle.js
dist/main.95feeb62d4fe21871683.bundle.js
dist/maps/5.95feeb62d4fe21871683.bundle.js.map
dist/maps/main.95feeb62d4fe21871683.bundle.js.map
如您所見,供應商檔案名已命名,5.95feeb62d4fe21871683.bundle.js并且由于它是散列的,因此每次供應商包更改時它都會更改。我如何定義名稱(例如[name].[fullhash].bundle.js.map 沒有專用函式)或以一種可以排除它的方式參考名稱SourceMapDevToolPlugin?
uj5u.com熱心網友回復:
為分割塊提供一個明確的名稱,很容易排除它們
splitChunks: {
chunks: "all",
cacheGroups: {
defaultVendors: {
filename: "vendors.[fullhash].bundle.js",
}
}
}
new webpack.SourceMapDevToolPlugin({
filename: "maps/[name].[fullhash].bundle.js.map",
publicPath: "https://private-server.com",
exclude: [/vendors/]
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/341224.html
上一篇:如何排除html-webpack-plugin生成的鏈接標簽(或者更具體地說是由mini-css-extract-plugin提取的.css檔案)?
