问:通过Angular 2中的base href了解子目录(使用angular-cli)

时间:2017-02-15 14:47:03

标签: angular angular-cli

TL; DR :Angular 2应用程序中的应用程序根文件夹在哪里?如何使用ng build同等地部署我的应用程序,并在使用子目录时通过ng serve运行/开发它?

这个问题适用于使用Webpack的Angular> = 2.4而不是AngularJS2 alpha-beta-whatever。在以下示例中,我也使用angular-cli@1.0.0-beta.26而非@ angular / cli。

在stackoverflow上已经有一些关于<base href="...">的问题,但我认为我没有理解解决方案或我的问题得到了适当的回答。

示例

我有一个项目,我的应用程序部署在目录sub/中的Web服务器上。应用程序的<base> - 元素当然是<base href="/sub/">。项目结构是由angular-cli生成的(请不要挑剔'/')

project/
--src/
----app/
------app.module
----assets/
----index.html
----[...]

当我通过ng build构建项目并将结果从dist/文件夹复制到我的网络服务器(到sub/)时,应用程序在mydomain/sub/运行正常。当我尝试通过ng serve运行应用程序时,它似乎无法找到正确的命令来让应用程序在localhost/sub/运行。编辑任何配置文件或使用-lrbu标志都不会对我的构建产生影响。

official docs/tutorial州/ s

  

如果app文件夹是应用程序根目录,就像示例应用程序一样,请完全按照此处所示设置href值。   <base href="/">

出现第一个问题应用根文件夹在哪里?

我假设应用程序根目录是我在src/中配置的application-cli.json目录,但我不确定,因为app文件夹也可能是app/

我尝试的是在添加实际的sub/文件夹(例如

)时更改目录
project/
--src/
----sub/
------app/
--------app.module
----assets/
----index.html

project/
--src/
----app/
------sub/
--------app.module
----assets/
----index.html

并编辑了一些有趣效果的*.config.json个文件。其中一个变体使我的应用程序根据需要使用ng serve但“破坏”我的部署'因为ng build会产生类似

的内容
dist/
--sub/
----assets/
----index.html
--main.bundle.js
--inline.bundle.js
--[...]

虽然我想在我的sub/目录中拥有javascript块,但结果对我来说没问题。这可以通过更改outDir中的application-cli.json属性,但再次中断ng serve或结果

来完成
dist/
--sub/
----sub/
------assets/
------index.html
----main.bundle.js
----inline.bundle.js
----[...]

现在我真的不记得是什么让它适合我,但我想知道这个问题的正确解决方案是什么。

0 个答案:

没有答案