我正在使用 SvelteKit 和 Typescript 包 Prisma Client。 Prisma 客户端是应用程序运行之前必须生成的依赖项。生成 Prisma 客户端,然后使用
npm run dev
运行开发版本。
但是当我使用
npm run build
构建时,如果不使用 node
为 Prisma 客户端执行另一个 npm install
,我就无法使用 npx prisma generate
运行应用程序。
我正在使用以下(可能非常详细)Gitlab
gitlab-ci.yaml
作业脚本来执行额外的npm install
步骤:
deploy:
image: alpine
before_script:
- apk update && apk add openssh-client rsync
script:
- mkdir -p ~/.ssh
- eval "$(ssh-agent -s)"
- echo "$PRIVATE_KEY" | ssh-add -
- ssh-keyscan -H $WEB_SERVER_IP >> ~/.ssh/known_hosts
- rsync -chavzP --stats . "root@$WEB_SERVER_IP:~/dsp-app"
- ssh root@$WEB_SERVER_IP "cd $FOLDER; npm install"
- ssh root@$WEB_SERVER_IP "cd $FOLDER; npx prisma generate --schema src/lib/backend/prisma/schema.prisma"
- ssh root@$WEB_SERVER_IP "cd $FOLDER; npm run build"
- ssh root@$WEB_SERVER_IP "cd $FOLDER; pm2 delete index 2> /dev/null || true"
- ssh root@$WEB_SERVER_IP "cd $FOLDER; pm2 startup"
- ssh root@$WEB_SERVER_IP "cd $FOLDER; pm2 start -f build/index.js --watch"
- ssh root@$WEB_SERVER_IP "cd $FOLDER; pm2 save"
然而,
npm install
步骤似乎是多余的。有没有办法将 Prisma 客户端与 npm build
捆绑在一起(然后将构建传输到服务器),这样我就不必在运行 npm install
的生产服务器上执行另一个 node
操作?这个问题类似于 Prisma 2.0 Beta Deploy