【发布时间】:2017-04-04 04:19:21
【问题描述】:
我正在通过节点部署我的 angular-cli 应用程序。我使用npm start,而不是ng serve --prod。
有没有办法从 npm 实现 --environment=prod 设置,以便它使用 environment.prod.ts 而不是 environment.ts?
我的 Dockerfile:
FROM node
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app
RUN npm install
COPY . /usr/src/app
EXPOSE 4200
CMD ["npm", "start"]
package.json 的顶部:
{
"name": "asgard2",
"version": "0.0.0",
"license": "MIT",
"scripts": {
"ng": "ng",
"start": "ng serve --host 0.0.0.0",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
[...]
要开始生产,我可以运行:
ng serve --prod
但我做不到:
npm start --prod
或者至少,当我这样做时,它仍然被部署为调试。我很可能在我的部署中做错了什么。
【问题讨论】:
-
不清楚。你的 npm start 脚本是做什么的?
-
@JBNizet:一切都是 angular-cli 设置的默认设置,但您提出了一个很好的观点。我可能应该先构建,然后部署和服务。
-
啊,所以你想让 npm start 做
ng serve --prod而不是默认的ng serve?只需编辑您的 package.json 并在ng serve之后添加--prod。 -
@JBNizet:好吧。我实际上想避免使用 NG Live Development Server,因为警告不要在生产中使用它,所以我试图通过 docker 将 angular-cli 应用程序部署到 Node.js。由于那里没有可用的“ng”,我想以另一种方式启动它。一路上可能有一些我不明白的地方。很多新东西要学。
-
因此您希望将应用程序部署到真实的生产 Web 服务器。使用
ng build --prod。这会在 dist 目录下生成一组静态文件,任何能够提供静态文件的 Web 服务器都可以提供这些文件。在您的 docker 容器中安装生产 Web 服务器(例如 Apache 或 Nginx),并使其为这些静态文件提供服务。如果需要,您也可以使用基于节点的 Web 服务器,但如果目标只是提供静态文件,我真的不明白这一点,Apache 或 Nginx 可能会更有效。
标签: node.js angular angular-cli