TypeScript
で書かれたプロジェクトがあります
ローカルで開発する場合:
ts-node
は開発依存としてインストールされ、コマンドは
to start: "ts-node src/index"
to init: "ts-node bin/init"
to init db: "ts-node bin/database-init"
to migrate db: "ts-node bin/database-migrate"
to add users: "ts-node bin/add-users"
導入時:
開発依存関係が削除され、アプリが変換され、コマンドが
to start: "node src/index"
to init: "node bin/init"
to init db: "node bin/database-init"
to migrate db: "node bin/database-migrate"
to add users: "node bin/add-users"
したがって、私はこれをpackage.json
で維持することを余儀なくされます
"scripts": {
"start": "ts-node src/index",
"start:js": "node src/index",
"init": "ts-node bin/init",
"init:js": "node bin/init",
"db:init": "ts-node bin/db-init",
"db:init:js": "node bin/db-init",
"db:migrate": "ts-node bin/db-migrate",
"db:migrate:js": "node bin/db-migrate",
"add:users": "ts-node bin/add-users",
"add:users:js": "node bin/add-users"
},
私はむしろ両方で機能する単一のコマンドが欲しいです
これを行うには、展開サーバーに次のエイリアスを設定しました
alias ts-node=/usr/bin/node
そのため、これらすべてが現在両方で機能します。
"scripts": {
"start": "ts-node src/index",
"init": "ts-node bin/init",
"db:init": "ts-node bin/db-init",
"db:migrate": "ts-node bin/db-migrate",
"add:users": "ts-node bin/add-users",
}
しかし、これは優れた解決策ではなく、他の場所に展開できないようにしています。right-node
内のts-node || node
の名前空間をpackage.json
に設定すると、移植性が高くなります。 。
npm scripts
を実行すると、すべての依存関係の名前空間が追加されることがわかっています。これは裏で発生しますが、これを手動で実行するための組み込み機能はありますか?
最良の解決策はNODE_ENVを使用することだと思いますが、最初に、以下をインストールする必要があります。
npm install if-env --save
そしてスクリプトで:
"scripts": {
"start": "if-env NODE_ENV=production ?? npm run start:prod || npm run start:dev",
"start:dev": "ts-node src/index",
"start:prod": "node src/index"
}
そしてサーバー上でNODE_ENVを本番に設定する必要があります
Linuxの場合:
export NODE_ENV=production
本番環境では、pm2やfoverer insted nodeなどを使用してアプリケーションを起動することをお勧めします