A.v*_*gen 4 angular-cli angular
我正在尝试使用Windows 7 Pro机器上的MINGW64泊坞箱中的angular-cli构建我的角度项目.
在git bash中,我使用的命令是:
ng build --prod --base-href /appcontext/
Run Code Online (Sandbox Code Playgroud)
我想要做的是修改我的当前基本标签与属性href="/"为href="/appcontext/"
相反,我得到一个基本标签href="C:/Program Files/Git/appcontext/".
有人有什么想法?
迟到的回答,但我面临着类似的问题,它在MINGW发生这个问题(我试图运行ng-serve与--base-href参数通过GIT猛砸在Windows 10).只需在Powershell中运行而不是GIT Bash解决 - base-href参数在那里处理得很好.
TLDR:首先替换/为/.
我在 Windows 上使用 git-bash 时也遇到了这个问题。git-bash 看到你命令的最后一个参数
ng build --prod --base-href /directory/
Run Code Online (Sandbox Code Playgroud)
作为相对于其二进制文件夹的路径,并在参数前面加上它(它将“似乎是”的相对路径转换为绝对路径)。
ng build --prod --base-href //directory/
Run Code Online (Sandbox Code Playgroud)
这不会被 git-bash 替换,但是,生成的基本标记有效地使浏览器不仅替换 URL 的基本路径,而且替换主机名,这是该字符串的第一部分。因此,如果您在主机上提供您的应用程序hostname,您希望 URL 为
http://hostname/directory/
Run Code Online (Sandbox Code Playgroud)
但它只是变成了
http://directory/
Run Code Online (Sandbox Code Playgroud)
您还可以通过将主机名硬编码到基本参数中来解决此问题:
ng build --prod --base-href //hostname/directory/
Run Code Online (Sandbox Code Playgroud)
这里的问题是您的构建现在假定一个固定的主机名。由于我不喜欢该解决方案,因此我进行了进一步的试验并找到了一个不错的替代方案。
我发现了一个聪明的“黑客”:用 HTML 实体替换第一个斜杠。CLI 工具将该字符串原封不动地放入href="...", 并且不会(双重)转义&符号(恕我直言,它应该这样做)。斜线符号的可能实体是/,因此您的命令如下所示:
ng build --prod --base-href /directory/
Run Code Online (Sandbox Code Playgroud)
这看起来很奇怪,但有效:
<base href="/directory/">
Run Code Online (Sandbox Code Playgroud)
这完全“等效”(在 HTML/XML 意义上)到
<base href="/directory/">
Run Code Online (Sandbox Code Playgroud)
请注意,当 Angular 开发人员决定在 CLI 工具中“修复”这个非转义参数时,这个 hack 可能不再起作用,因为这会导致
<base href="&#x2f;directory/">
Run Code Online (Sandbox Code Playgroud)
最终使您的网址看起来像
http://hostname//directory/
Run Code Online (Sandbox Code Playgroud)
我在这个网站上找到了一个适用于我的 Git bash 的解决方案:
\nng build \xe2\x80\x93base-href="//my-path\\\\" --prod\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1515 次 |
| 最近记录: |