2017-08-01 67 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文件从它