Sane方法来构建和部署typescript / node.js应用程序

时间:2016-06-28 11:03:19

标签: javascript node.js deployment typescript

我正在使用在Typescript中编写的node.js应用程序,这意味着它需要在运行之前编译为JS。由于我来自java / jvm背景,您将预构建的软件包发送到服务器并在那里运行,我有点害怕部署的方式,您将代码推送到git并且它正在构建/首先在服务器上编译然后运行。

我不喜欢它有两个主要原因:

  • dev依赖项需要安装在服务器上
  • 部署取决于外部资源可用性(npm等)。

我发现NAR https://github.com/h2non/nar或多或少是我想要的,但它有一些缺点(不适用于一些具有原生扩展名的deps。)

我的问题是:是否还有其他"理智"部署node.js部署的方式比服务器上npm installtsc的这种风险组合?或者我应该让那个下沉并以这种方式做到这一点?

说实话,我不相信没有更明智/可靠的选择。

2 个答案:

答案 0 :(得分:0)

您可以做什么(但可能还有其他完全有效的方法)是在本地(或在CI服务上)构建项目,并且只在您认为它有效时(测试等)部署此构建版本。 / p>

这样一来,如果发生了一些不好的事情,例如失败的npm或编译错误,你就不会部署任何东西,并且你有时间解决这个问题。

例如,我曾经有一个gulp任务(但它可以是其他任何东西:Grunt,一个简单的npm脚本......)克隆一个生产存储库并将项目构建到这个目录中

这样,我可以检查我的构建是否有效。如果是,我创建一个新提交并将其推送到 production repo,它以您需要的方式提供(例如,在Heroku实例上)。

<强>赞成

  • 清除dev和非dev依赖项的分离
  • 仅在您知道构建有效时进行部署
  • 开发存储库
  • 上的源代码管理上没有构建的文件
  • No&#34; live&#34;依赖于npm installtsc build
  • 等外部任务

<强>缺点

  • 您有两个独立的git存储库(一个包含源代码,一个包含项目的内置版本)
  • 生产过程比简单承诺
  • 重一点
  • (来自评论)没有正确处理依赖于必须(重新)构建的原生扩展的npm包的情况

答案 1 :(得分:0)

  

是否有任何其他“理智”的方式来进行部署node.js部署,而不是npm install和服务器上的tsc这种风险组合

package.json + npm install + tsc 是实现目标的方法。没什么风险的。

更多

只需使用npm scripthttps://github.com/TypeStrong/ntypescript#npm-scripts