【发布时间】:2018-04-27 21:09:04
【问题描述】:
我想构建一次 Angular 5 应用,然后将其发布到不同的地址,例如:
默认情况下,Angular 会假设所有文件都托管在 / 所以当我访问 index.html 时,它会加载诸如 https://sub1.example.com/vendor.bundle.js 之类的脚本,因为它部署到 /myapp1/vendor.bundle.js(到让它稍微复杂一些,我实际上是从一个单独的域的 CDN 加载文件,但我认为这不会影响问题):
Angular 5 允许我运行:
ng build --deploy-url "https://example.com/myapp1"
这将修改 inline.bundle.js 并设置以下内容:
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "https://example.com/myapp1";
这反过来将确保从正确的路径加载脚本。
但是,这是一个编译时开关,我想在部署时或运行时进行配置。
我已经阅读了各种建议,例如:
- How do I set the deployUrl at runtime in Angular - 这似乎不再起作用了。运行 ng build 后,引用的变量 __webpack_public_path__ 在代码中的任何位置都不存在。
- Setting server url dynamically during runtime in AngularJs app using value during-runtime-in-angularjs-app-using-value - 这仅适用于 Angular。
我当前的解决方法是在部署时更新变量 __webpack_require__.p,但这极易出错,因为此时此变量已最小化为“np”之类的东西,并依赖于内部实现细节。
这样做的正确方法是什么?
【问题讨论】:
标签: angular url deployment command-line-interface