我正在使用Angular 4制作一个MEAN堆栈应用程序。
我做了什么:
/api
.angular-cli.json
已将outDir
属性更改为../public
/api
)发送到Angular应用我的目录结构:
angular-cli
生成的角度应用/api
路由定向到的地方。/
发送到角度应用(public/index.html
)index.html
后,ng build
个文件所在的文件夹
当我运行应用程序时,它可以运行。节点服务器将我的请求发送到带有index.html
文件夹的Angular Apps public
,并显示我的app.component.html
模板。
我的问题:
我运行nodemon
启动我的节点/快速服务器&然后导航到angular-src
文件夹并运行ng build
以设置我的角度应用。对于我来说,这个过程对我来说是一个更好的方法吗?
每次我更改角度时,我都必须运行ng build
应用程序,以便它可以读取更改。有什么像nodemon
但是
用于观察变化并自动重置的角度。
我有2个package.json
个文件。一次用于node / express,另一次用于angular。项目中是否只有1个package.json
文件?
该应用程序最终必须在 Heroku 上启动,目前我有 Procfile ,其中包含web: npm start
。如何在heroku中管理角度4?我是否需要在Procfile中添加ng build
命令?
Angular App& Node / express运行不同的端口(即端口3000和4200),还是应该都在一个端口上?
我使用Angular 4实现的结构是否适用于MEAN App。
我知道其中一些问题可能是基于意见的,但我正在寻找您的专业建议,以便在这些情况下考虑最佳做法。
答案 0 :(得分:1)
这是我的两分钱(我在生产模式下也在Heroku上运行了一个应用程序,我遵循了每个Heroku教程和最知名的教程):
您必须每次都运行ng build
。构建允许您缩小代码,而ng服务不会。我不知道你怎么能自动完成它,但如果你正在使用Heroku,只需按下你的仓库即可建立你的项目(如果你当然使用正确的命令)
是的,您必须在每次更改时重建。如果您使用的是应用程序,则必须针对您实施的每种语言运行ng build
。因此,考虑到时间(对我而言,2种语言= 6分钟),你不应该自动制作它
我只保留一个package.json
我放置所有依赖项(后面和前面)
我对Heroku的构建命令如下:
"postinstall": "npm run build-i18n",
"i18n": "ng xi18n --output-path src/i18n --out-file messages.xlf",
"build-i18n:fr": "ng build --output-path=dist/fr --aot --prod --bh /fr/ --i18n-file=src/i18n/messages.fr.xlf --i18n-format=xlf --locale=fr",
"build-i18n:en": "ng build --output-path=dist/en --aot --prod --bh /en/ --i18n-file=src/i18n/messages.en.xlf --i18n-format=xlf --locale=en",
"build-i18n": "mkdir dist && npm run build-i18n:en && npm run build-i18n:fr"
postinstall
由Heroku发布,它为两种语言启动两种版本。
您应该有不同的端口。事实上,在同一个端口上启动它们是不可能的。
您的项目结构可以随意使用。这取决于个人喜好。但我的建议是遵循John Papa的指导方针。