2017-08-01 68 views
2

我用下面的代碼添加圖標到MdIconRegistry:我如何獲得的WebPack publicPath

constructor(iconRegistry: MdIconRegistry, sanitizer: DomSanitizer) { 
    iconRegistry.addSvgIconSet(
    sanitizer.bypassSecurityTrustResourceUrl('/assets/svg-sprite-action-symbol.svg')); 
    iconRegistry.addSvgIconSet(
    sanitizer.bypassSecurityTrustResourceUrl('/assets/svg-sprite-content-symbol.svg')); 
    iconRegistry.addSvgIconSet(
    sanitizer.bypassSecurityTrustResourceUrl('/assets/svg-sprite-navigation-symbol.svg')); 
} 

此使用ng [build|serve] --deploy-url=/public/時(在生產中,我想給ng build輸出部署到一個CDN不幸打破)

有沒有一種方法可以從我的角度組件訪問webpack publicPath變量,以便我可以指定相對於該svg圖標的url?

我看了一下ng build輸出,我可以看到變量設置在inline.bundle.js,但我不確定如何正確訪問它。

/******/ __webpack_require__.p = "/public/"; 
+1

我不知道這是否應該是提供給應用程序都可以導入的內容。我猜,更簡潔的方法是將其公開爲環境變量。 – estus

+1

你可以看看這篇文章https://webpack.js.org/guides/public-path/。可能你想要什麼。 – Faisal

+0

Petr TIchy在Youtube上做了一個很好的視頻系列。 https://www.youtube.com/playlist?list=PLkEZWD8wbltnRp6nRR8kv97RbpcUdNawY下面是他的webpack.config.js的一個示例,包括Twitter Bootstrap。你可以從中看到他如何處理圖像。 https://github.com/Ihatetomatoes/webpack-101-bootstrap/blob/master/webpack.config.js有時候這個語法會隨着這個東西發展 - 所以一定要參考https://webpack.js.org/也是網站 – JGFMK

回答

2
如果你有機會到 webpack-configration file

那麼你就可以得到easely公共路徑

假設你有webpack.config.js在你的項目的根,你必須在/src/component/mycomponent.js

和你webpack.config組件文件。 js是這樣的

module.exports = { 
. 
. 
. 
output: { 
    path: "somthing", 
    filename: "somthing", 
    publicPath: "something" 
} 
. 
. 
. 
} 

那麼它會像

import webpackConfig from "../../webpack.config.js 

const publickPath = webpackConfig.output.publicPath 

的WebPack配置文件就像是另一個javascript文件從它