2017-04-03 51 views
1

我正在通过节点部署我的角度cli应用程序。我使用npm start而不是ng serve --prod节点 - 设置角度cli环境

有没有办法从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 

或者至少,当我这样做时,它仍然作为调试部署。我在部署中很可能做错了事。

+0

不明确。你的npm启动脚本是做什么的? –

+0

@JBNizet:一切都是由angular-cli设置的默认设置,但您提出了一个非常好的观点。我应该先建立,然后部署和服务。 –

+0

啊,所以你想让npm开始执行'ng serve --prod'而不是默认的'ng serve'?只需编辑你的package.json并在'ng serve'后添加'--prod'。 –

回答

1

据我了解,你要部署你的应用到实际生产的Web服务器。使用ng build --prod。这会在dist目录下生成一组静态文件,这些静态文件可以由任何能够提供静态文件的Web服务器提供服务。

在Docker容器中安装生产Web服务器(例如Apache或Nginx),并使其服务于这些静态文件。

如果需要,您也可以使用基于节点的Web服务器,但如果目标仅仅是为静态文件提供服务,我真的不明白这一点,Apache或Nginx可能会更有效。

1

你可以进入你的environment.ts文件并更改

export const environment = { 
    production: false 
}; 

export const environment = { 
    production: true 
}; 
+0

但是当我不在生产时,我会有反向刺激。我想我可以在部署期间将environment.ts的内容复制到environment.prod.ts。 –