小编nfl*_*aig的帖子

在生产环境中部署 TypeScript Node.js 应用程序,无需使用 docker

目前在生产中部署 TypeScript Node.js 应用程序而不使用 docker 的最佳实践是什么?

在使用 git 的情况下,存在一个问题,您需要安装所有依赖项才能构建项目,因为通常需要安装为 devDependency 的类型。这也意味着您安装用于测试、检查等的模块,而这些在生产中根本不需要。

我正在考虑将所有类型添加为依赖项,然后允许运行npm install --production以避免安装所有 devDependency 并且仍然能够通过运行来构建项目npm run build

我正在考虑的另一个解决方案是通过 npm 进行部署,类似于 TypeScript 节点模块的发布和安装方式,但该解决方案似乎也不是最优的。

deployment production node.js typescript

8
推荐指数
1
解决办法
6535
查看次数

解析环境变量的正确方法

我基本上在我所有的项目中都使用node-config,大多数时候我都会遇到解析设置为环境变量的布尔值和数字的问题。

例如

默认.js

module.exports = { 
    myNumber = 10,
    myBool = true
}
Run Code Online (Sandbox Code Playgroud)

自定义环境变量.js

module.exports = { 
    myNumber = "MY_NUMBER",
    myBool = "MY_BOOL"
}
Run Code Online (Sandbox Code Playgroud)

现在,明显的问题是,如果我使用设置为环境变量的自定义值覆盖默认值,它们将是字符串值而不是数字或布尔值。所以现在,要确保我的代码中的类型是正确的。我总是必须进行类型转换,对于布尔值,请使用适当的库,例如yn。问题是我每次使用config.get()例如+config.get("myNumber")or时都必须进行此转换yn(config.get("myBool"))

有没有更好,更优雅的方法来做到这一点?

我看到的一种解决方案是将类型属性添加到环境变量中,因为它在此处使用格式完成。这将允许做这样的事情......

自定义环境变量.js

module.exports = { 
    myNumber = {
        name: "MY_NUMBER",
        type: "number"
    },
    myBool = {
        name: "MY_BOOL",
        type: "boolean"
    }
}
Run Code Online (Sandbox Code Playgroud)

node-config将处理类型转换,并且在获取它时无需一直在代码中执行此操作。当然,需要为布尔值实现适当的解析器,但那些已经存在并且可以在这里使用。

node.js node-config

4
推荐指数
2
解决办法
5542
查看次数

是否建议发布 TypeScript 节点模块的源文件?

我注意到一些 TypeScript 节点模块(例如loopback-next/packages)使用节点模块发布它们的源文件。这是否有特殊原因,还是只是不必要地增加了模块的大小?

node-modules typescript loopbackjs loopback4

3
推荐指数
1
解决办法
1420
查看次数