Как выполнить стартовый скрипт с помощью Nodemon

90

Как я могу выполнить запускающий скрипт из файла package.json с помощью Nodemon?

Цитронен
источник
Вы уверены, что можете выполнить стартовый скрипт из package.json? Потому что, насколько я знаю, package.json - это список всех ваших зависимостей, а nodemon - чтобы ваш процесс работал. Я не совсем понимаю, на что вы здесь намекаете?
Сарас Арья

Ответы:

142

Это будет простая команда для этого

nodemon --exec npm start
Ашутош Джа
источник
Что, если мне нужно запускать только тесты без запуска приложения? Ваше решение запускает оба.
Сергей
1
это работает, npm startно не запускает сервер узла для меня ... как он узнает, где находится server.js?
Sonic Soul
39

В пакете json:

{
  "name": "abc",
  "version": "0.0.1",
  "description": "my server",
  "scripts": {
    "start": "nodemon my_file.js"
  },
  "devDependencies": {
    "nodemon": "~1.3.8",
  },
  "dependencies": {

  }
}

Затем с терминала вы можете использовать npm start

Установка Nodemon: https://www.npmjs.com/package/nodemon

Мурат Озгуль
источник
1
Извините, ищу способ выполнить стартовый скрипт с помощью nodemon, а не запускать nodemon в стартовом скрипте. Извините, если это было непонятно.
Citronen
6
Не npm startпотерпит неудачу в производстве из-за отсутствия nodemon?
ripper234
2
npm run startнеnpm start
M. Dhaouadi
1
Я новичок в npm. Я не понимаю, почему нам нужно указывать стартовый скрипт, когда мы можем использовать nodemon из коробки? Я просто устанавливаю nodemon с помощью npm и использую его напрямую, без указания сценария, и он отлично работает.
Хохи Танн
@ M.Dhaouadi npm startявляется псевдонимомnpm run start
Джордж
16

У меня есть файл TypeScript с именем «server.ts». Следующие сценарии npm настраивают Nodemon и npm для запуска моего приложения и отслеживания любых изменений в файлах TypeScript:

"start": "nodemon -e ts  --exec \"npm run myapp\"",
"myapp": "tsc -p . && node server.js",

У меня уже есть Nodemon по зависимостям. Когда я запускаю npm start, он попросит Nodemon контролировать свои файлы с помощью -eпереключателя, а затем он myappвызовет сценарий npm, который представляет собой простую комбинацию переноса файлов машинописного текста и последующего запуска полученного server.js. Когда я меняю файл TypeScript, из-за -eпереключения происходит тот же цикл, и новые файлы .js будут сгенерированы и выполнены.

МехранTM
источник
14

Я использую Nodemon версии 1.88.3 в своем проекте Node.js. Чтобы установить Nodemon, см. Https://www.npmjs.com/package/nodemon .

Проверьте свой package.json, посмотрите, изменились ли "скрипты" следующим образом:

  "scripts": {
    "dev": "nodemon server.js"
  },

server.jsэто мое имя файла, вы можете использовать другое имя для этого файла, например app.js.

После этого запустите это на своем терминале: npm run dev

Сукма Сапутра
источник
6

Использование -exec:

"your-script-name": "nodemon [options] --exec 'npm start -s'"
КитсПикс
источник
Есть ли другой способ, кроме exec?
Citronen
Просто nodemon [options] --exec 'npm start -s'если вы хотите сделать это из командной строки.
nathanhleung
@ArnoldRoa Установите его.
Константин Ван
5

Сначала измените файл package.json ,

"scripts":
    { 
        "start": "node ./bin/www",
        "start-dev": "nodemon ./app.js"
    },

После этого выполните команду

npm run start-dev
Ркешри
источник
1
Но когда вы убегаете, app.jsвы обходите все, что ./bin/wwwделает ...
Джейк Уилсон,
1
эта открытая новая вкладка каждый раз
Куай-Гон Джинн
5

В файле package.json. изменить файл как это

"scripts":{ 
   "start": "node ./bin/www", 
   "start-dev": "nodemon ./app.js"
 },

а затем выполните npm run start-dev

Сохаил Ахмад
источник
2

Nodemon генерирует события при каждом изменении состояния; запуск, перезапуск, сбой и т.д. Вы можете добавить файл конфигурации Nodemon (nodemon.json) следующим образом:

{
   "events": {
       "start": "npm run *your_file*"
   }
}

Подробнее читайте в событиях Nodemon - запускать задачи при запуске сервера, перезапуске, сбое, выходе .

Король Джеймс Энеджо
источник
1

Вы также можете установить nodemon глобально для частого использования:

npm i nodemon -g или sudo npm i nodemon -g

затем отредактируйте свой package.json:

  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js"
  },

Как правило, «dev» указывает на использование в целях разработки ( npm run dev ).

dhahn
источник
1

Это будет зависеть от типа вашей установки Nodemon. Если вы устанавливаете Nodemon глобально с помощью команд ( npm install nodemon --globalили npm install nodemon -g), вам не нужно указывать скрипт для Nodemon в вашем файле package.json . Просто выполнение команды nodemon index.jsзапустит ваш проект.

Но если вы устанавливаете Nodemon локально с помощью команды, npm install nodemonвам необходимо указать сценарий. Если вы назовете его start, то npm run startили npm startзапустит сервер.

// Absolutely no need for global installation
 "scripts": {
    "start": "nodemon index.js"
  }
Лорд
источник
1

Если вы nodemonустановили глобально, простой запуск nodemonв вашем проекте автоматически запустит startскрипт из package.json.

Например:

"scripts": {
  "start": "node src/server.js"
},

Из документации nodemon :

nodemon также будет искать свойство scripts.start в package.json (начиная с nodemon 1.1.x).

Альф Итон
источник
0

В упаковке json:

"scripts": {
  "start": "node index",
  "dev": "nodemon index"
},

"devDependencies": {
  "nodemon": "^2.0.2"
}

А в терминале для разработки:

npm run dev

А для запуска сервера штатный:

npm start
amixOV
источник
Что такое "regiuler" ? Вы имеете в виду «обычный» ?
Питер Мортенсен
-1

Чтобы избежать глобальной установки, добавьте Nodemon в качестве зависимости, затем ...

package.json

"scripts": {
    "start": "node ./bin/www",
    "start-dev": "./node_modules/nodemon/bin/nodemon.js ./bin/www"
  },
zipzit
источник
Вы все еще можете сделать его "start-dev": "nodemon ./bin/www", если вы установите его в devDependencies
WoLfPwNeR 01