我正在使用Knex.js来管理项目中的迁移和种子,并通过--env
切换到单个命令来管理连接选项。
如何确保诸如knex seed:run
之类的种子命令永远不会在生产环境中运行?
答案 0 :(得分:2)
这是我的方法:
if (process.env.APP_ENV !== "development") {
console.error("Error: seeds can only be used in development");
process.exit(1);
}
完成!
答案 1 :(得分:1)
例如,通过不使用种子或通过在每个种子的开头添加代码来检查knex客户端配置是否未指向dev数据库,它将引发错误。
knex中没有内置功能可以阻止这种情况。
答案 2 :(得分:1)
我通过给它提供一个不存在的种子目录来解决了这个问题。如果然后在生产中运行,它将崩溃并显示no such file or directory
。
下面是我的knexfile.js
:
module.exports = {
...,
production: {
client: 'pg',
connection: ...,
seeds: {
directory: 'you-are-not-able-to-run-seeds-in-production'
}
}
}