因此,我有一个正在开发的数据库,我运行
db:generate
和 db:migrate
来创建数据库,然后运行使用该数据库的应用程序。
而且效果很好。
但是当我无法运行直接命令时,如何在生产中执行此操作。我在自托管 VPS 上使用 https://easypanel.io。
我只使用前置脚本还是后置脚本?推荐的方法是什么?
"scripts": {
"build": "remix build",
"dev": "remix dev --manual",
"lint": "eslint --ignore-path .gitignore --cache --cache-location ./node_modules/.cache/eslint .",
"prestart": "npm run db:generate",
"start": "remix-serve ./build/index.js",
"clean": "rimraf .cache/ build/ public/build/",
"db:push": "drizzle-kit push:sqlite --config drizzle.config.ts",
"db:generate": "drizzle-kit generate:sqlite --config drizzle.config.ts",
"db:studio": "drizzle-kit studio --host localhost --port 3002 --verbose --config drizzle.config.ts",
"db:seed": "cross-env NODE_ENV=development tsx ./app/seed/index.ts",
"typecheck": "tsc",
"prettier": "prettier --write app/**/*.{ts,tsx}"
},
我正在想像上面那样的
prestart
。最好的方法是什么?我只希望它运行一次来创建 ./sqlite.db
然后就不需要它了。
我认为你可能误解了generate的作用。
这只是生成一个在 /drizzle 文件夹下创建的迁移脚本。或者无论你给它起什么名字。
在开发过程中对任何关系进行更改后,必须生成迁移脚本。
您的远程环境不应生成迁移脚本。您,开发人员,创建它们。或者,更常见的是,您告诉 drizzle 根据架构更改自动执行此操作。使用 db:generate 命令。
远程环境所要做的就是运行迁移,它将可以在代码中访问该迁移。
通常最简单的方法是让应用程序在启动时运行任何迁移。但方法有很多。