使用 angular-cli 在 Angular 中为静态文件添加前缀路径

Posted

技术标签:

【中文标题】使用 angular-cli 在 Angular 中为静态文件添加前缀路径【英文标题】:Adding prefix path to static files in Angular using angular-cli 【发布时间】:2017-07-22 13:54:08 【问题描述】:

我有一个现有的 django 项目,我通过 /static/ 路径提供静态文件。我正在将应用程序的一部分迁移到 angular2,成为该网站的特定移动版本。

<base href="/"> 添加到 index.html 会加载静态文件 www.example.com/main.js 在此处获取 404。 将<base href="/static/"> 添加到 index.html 会正确加载静态文件,但是当应用程序启动时,它会将 url 更改为 /static/(我正在使用路由器),尽管我的 url 应该是 /order/。

有没有办法使用基本 href 作为 / 但使用 angular-cli 为脚本和样式文件添加前缀

使用版本ng --version

@angular/cli: 1.0.0-rc.0
node: 6.9.1
os: win32 x64
@angular/common: 2.4.9
@angular/compiler: 2.4.9
@angular/core: 2.4.9
@angular/forms: 2.4.9
@angular/http: 2.4.9
@angular/platform-browser: 2.4.9
@angular/platform-browser-dynamic: 2.4.9
@angular/router: 3.4.9
@angular/cli: 1.0.0-rc.0
@angular/compiler-cli: 2.4.9

【问题讨论】:

【参考方案1】:

您可以使用 --deploy-url 为生成的静态文件的路径添加前缀。 ng build --deploy-url /static/。它将在生成的 index.html 中为 js 文件的路径添加 /static/ 前缀,如下所示:

<script type="text/javascript" src="/static/inline.bundle.js"></script>

来自帮助文档:

--deploy-url (String) URL where files will be deployed.

示例:

ng build --prod --deploy-url=example.com/scripts/

根据 cmets 更新答案。

【讨论】:

资产中的静态文件呢? 是的,-d 不是有效的命令,所以 --deploy-url 是唯一的。 图片怎么样?如果我使用 base href 这样做,它将为所有路由添加前缀【参考方案2】:

使用 Angular CLI 6.1.1

我是这样做的,你需要使用构建标志--base-href

示例

ng build --prod --base-href=/dist/my-app/

我像这样访问该网站http://127.0.0.1:5500/dist/my-app/index.html

官方文档参考here

【讨论】:

这不是 OP 想要的,这只是在 href 中更改 &lt;base href="/"&gt;

以上是关于使用 angular-cli 在 Angular 中为静态文件添加前缀路径的主要内容,如果未能解决你的问题,请参考以下文章

使用 angular-cli 进行 CSS 编译

使用 angular-cli 在通用渲染中使用 cookie

在带有 NPM 的 Angular 4 应用程序中使用分叉的 Angular-CLI

带有快速项目的 angular-cli

Angular-cli:使用 ng lint

在 Angular 2/Angular-CLI 中将 CSS 排除在 JS 之外