在Heroku审查应用程序后部署步骤中使用NodeJS开发依赖项



我在Heroku上托管了一个(演示(应用程序。我已经启用了Heroku的"评论应用程序"功能,可以为拉请求评论创建新的实例。这些审查实例都通过Heroku的附加系统为它们提供了一个新的MongoDB(在mLab上(。这很管用。

在我的存储库中,我定义了一些种子程序脚本,以便快速启动并运行测试数据库。运行yarn seed(或npm run seed(将用测试数据填充数据库。这在开发过程中非常有效,对于评论应用程序来说也是完美的。我想在Heroku审查应用程序的postdeploy挂钩中执行seeder命令,这可以通过在app.json文件的environment.review部分下指定它来完成。像这样:

{
"name": "...",
"addons": [
"mongolab:sandbox"
],
"environments": {
"review": {
"addons": [
"mongolab"
],
"scripts": {
"postdeploy": "npm run seed"
}
}
}
}

问题是,种子程序脚本依赖于一些仅用于开发的依赖项(fakerts-node[这是一个TypeScript项目]和mongo-seeding(来执行。这些依赖关系在Heroku应用程序的postdeploy阶段不可用。

我也不认为在常规构建步骤中"编译"typescript是最好的主意。此种子程序脚本仅用于开发(和审查应用程序(。此外,我不确定这是否能解决像faker这样缺少依赖项的问题。

怎么办?我错过了什么把戏吗?

我可以跳过Heroku主动删除开发依赖项的步骤吗?但仅适用于评论应用程序?或者更好的是,我可以只"排除"我需要的几个依赖项,并且只用于审查应用程序吗?

Heroku文档指出,当NODE_ENV变量包含除"production"之外的任何内容时,在构建步骤之后不会删除devDependencies

为了确保这种情况只发生在Heroku审查应用程序中,您可以在app.json文件的environments.review部分下设置NODE_ENV变量。以下配置应该可以做到这一点:

{
"name": "...",
"addons": [
"mongolab"
],
"environments": {
"review": {
"addons": [
"mongolab:sandbox"
],
"env": {
"NODE_ENV": "development"
},
"scripts": {
"postdeploy": "npm run seed"
}
}
}
}

最新更新