首页 文章

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

提问于
浏览
1

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

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

需要在服务器上安装

  • dev依赖项

  • 部署取决于外部资源可用性(npm等) .

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

我的问题是:是否有任何其他"sane"方法在服务器上进行部署node.js部署而不是 npm installtsc 的这种危险组合?或者我应该让那个沉入其中并以这种方式去做?

说实话,我不相信没有更合理/可靠的选择 .

2 回答

  • 0

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

    package.json npm install tsc 是这样做的方法 . 没什么冒险的 .

    更多

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

  • 0

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

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

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

    这样,我可以检查我的构建是否有效 . 如果是,我进行新的提交并将其推送到 生产环境 仓库,以您需要的方式提供(例如,在Heroku实例上) .

    Pros

    • 明确区分开发和非开发依赖项

    • 仅在您知道构建有效时才进行部署

    • 开发存储库上的源代码管理上没有构建的文件

    • npm installtsc build等外部任务的依赖性"live"

    Cons

    • 您有两个独立的git存储库(一个包含源代码,一个包含项目的内置版本)

    • 生产环境 过程比简单承诺掌握要重一点

    • (来自评论)不能正确处理依赖于必须(重新)构建的本机扩展的npm包的情况

相关问题