Можете ли вы установить псевдонимы для скриптов npm внутри package.json? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть проект, написанный на Typescript

При локальной разработке:

ts-node устанавливается как dev-зависимость, Команды:

  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"

При развертывании:

dev-зависимости удалены, приложение перенесено, команды:

  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, Так что это происходит за кулисами, но есть ли встроенный функционал, чтобы сделать это руководствоLY

1 Ответ

0 голосов
/ 04 октября 2018

Я думаю, что лучшее решение - это работать с 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 или insted foverer для запуска приложения

...