Есть ли способ использовать npm-скрипты для запуска tsc -watch && nodemon --watch?

Я ищу способ использовать скрипты npm для запуска tsc --watch && nodemon --watch одновременно. Я могу запускать эти команды независимо, но когда я хочу запустить оба из них, выполняется только первый. например. если у меня есть этот script:

"scripts": {    
    "runDeb": "set NODE_ENV=development&& tsc --watch && nodemon --watch"
  }

tsc --watch выполняется, но nodemon никогда не вызывается, и наоборот.

Ответ 1

Попробуйте добавить это в свой пакет package.json:

"scripts": {
  "start": "concurrently --kill-others \"tsc -w\" \"nodemon dist/app.js\"",
}

А также добавьте эти пакеты npm (одновременно, nodemon, typescript) к вашему package.json:

"devDependencies": {
  "concurrently": "^2.2.0",
  "typescript": "^1.8.10",
  "nodemon": "^1.9.2",
}

Ответ 2

Я думаю, что вы хотите что-то вроде этого (моя текущая настройка):

"scripts": {
    "compile": "tsc && node app.js",
    "dev": "./node_modules/nodemon/bin/nodemon.js -e ts  --exec \"npm run compile\""
}

Я создал два сценария "compile" и "dev". Чтобы начать разработку, вы просто запускаете npm run dev, который запускает nodemon и заставляет его смотреть файлы .ts(используя флаг -e). Затем каждый раз, когда файл .ts изменяется, nodemon будет exec компилируемой задачей, которая в основном компилирует и запускает приложение node.

В то время как одновременное использование является хорошим вариантом, моя настройка гарантирует, что tsc выполняется работа перед попыткой выполнить полученные .js файлы.

Ответ 3

Я уже некоторое время использую решение AlterX, и оно отлично работает, но я обнаружил, что оно довольно медленное. Вместо этого я сейчас использую tsc -w atch. Это заставляет tsc использовать инкрементную компиляцию, похожую на флаг -w, что делает перезапуск приложения намного быстрее.

Это так же просто, как положить что-то похожее на это в вашем package.json:

"scripts": {
  "start": "./node_modules/.bin/tsc-watch --onSuccess \"node .\""
}

Ответ 4

Мое решение в октябре 2018 года с использованием новейших версий nodemon.

первый:
установить nodemon (npm install nodemon --save-dev) и ts-node (npm install ts-node --save-dev)

второй:
создать nodemon.json. Мне нравится хранить мою конфигурацию nodemon в отдельном файле nodemon.json, чтобы облегчить чтение сценариев npm. Итак, создайте nodemon.json в корне проекта со следующим содержимым:

{
    "ignore": ["**/*.test.ts", "**/*.spec.ts", ".git", "node_modules"],
    "watch": ["src"], // your .ts src folder
    "exec": "npm start", // your npm script created in package.json
    "ext": "ts"
}

затем создайте свой npm start скрипт npm start например, так:

"scripts": {
    ...
    "start": "ts-node src/server.ts",
    "dev:ts": "nodemon",
    ...
  }

Затем запустите npm run dev:ts или yarn dev:ts и посмотрите код вашего машинописного сервера.

Для более подробной информации, такой как Jest тесты Jest т.д., Вы можете заглянуть в эту статью

Ответ 5

TypeScript-node-Starter работает быстро

https://github.com/microsoft/TypeScript-node-Starter/blob/master/package.json

"dev": "concurrently -k -n \"TypeScript,Node\" -c \"yellow.bold,cyan.bold\" \"npm run watch-ts\" \"nodemon ./dist/app.js\"",
"watch-ts": "tsc -w"

Здесь мы даем npm run watch-ts имя TypeScript (используя concurrently -n) и добавляем цвет yellow.bold, используя concurrently -c.

Итак, я могу довольно легко распознать сообщения для каждого процесса.

Ответ 6

Что происходит

Проблема в том, что на всех файлах есть два наблюдателя. Один из них - tsc -w а nodemon - nodemon.

Когда .ts изменение в файл .ts, tsc обнаружит это, tsc и создаст версию .js в папке назначения.

Теперь, с точки зрения Nodemon, он обнаруживает два изменения (как минимум) - одно для .ts и одно для .js. При первом изменении он перезапускается сам, но при втором изменении он не знает, что уже происходит другое "начало", поэтому он пытается перезапустить снова, и это не удается. Для меня это ошибка nodemon - см. Https://github.com/remy/nodemon/issues/763.

Решения

1) Используйте tsc-watch --onSuccess

У tsc -w atch есть --onSuccess который вы можете поместить node. Таким образом, у вас будет только один наблюдатель.

2) Задержка nodemon

Вы можете легко отложить перезапуск nodemon (см. --delay). Это требует наименьшего изменения настройки.

3) У nodemon только мониторинг целевой папки TSC

Я не смог настроить его, но, таким образом, nodemon обнаружит только одно изменение. Это может вызвать проблемы в будущем или когда tsc генерирует несколько файлов.

Ответ 7

Обычная компиляция: если имя файла main.ts

шаг 1: tsc main.ts

шаг 2: узел main.js

Простая и разовая (цикличная) компиляция:

TSC Main --watch