`npm build 'не запускає скрипт з назвою" build "в package.json


138

Для нового модуля я намагаюся використовувати npm buildбез gulp / Grunt / інших спеціалізованих інструментів побудови.

"scripts": {
  "build": "node build.js"
},

Мій build.js просто

console.log('Hello')

Однак біг

npm build

Просто виходить, не надрукуючи нічого, зі статусом 0.

Запуск:

npm install

Також виконує всі звичайні речі, але також не запускає build.js.

Як я можу змусити npm запустити сценарій збірки?

Редагувати: навіть прості команди bash, здається, не працюють, наприклад

"scripts": {
    "build": "touch TESTFILE"
},

Не створює файл з таким ім'ям.


Обхід: installзамість цього використовувати .
Заз

Це в основному величезне і неінтуїтивне роздратування NPM і є однією з причин, що я продовжую використовувати Пряжу. За допомогою пряжі я можу запустити будь-який користувальницький сценарій як параметр, тобто книжка з історією пряжі запустить сценарій книги з розповідями. У NPM я повинен робити npm run storybook, і крім того, якщо я хочу передавати якісь параметри через npm, це вимагає - перед цим, тому при порівнянні нитки історії --ci до npm запускайте storybook - --ci, це для мене не мислитель.
Емобе

Відповіді:


243

На жаль, npm buildце вже внутрішня команда, як описано в документах :

Це команда сантехніки, яка викликається npm link та npm install. Як правило, це не слід викликати безпосередньо.

Оскільки ця команда вже існує, вона завжди тініє над вашою "build": "node build.js".

Повнокваліфікований спосіб запуску власного сценарію - це run-scriptабо його псевдонімrun :

$ npm run build

npm startта інші - це короткий шлях, але це лише варіант, коли існуюча команда npm не затінює її, як npm buildце робиться.


Для нащадків (як уже згадували інші) npm buildвикористовується npm для створення нативних C / C ++ адонів вузла за допомогою node-gyp . Це не задокументовано, тому що зазвичай це відбувається автоматично, але якщо вас цікавить, вихідний код тут .


15
То що ж npm build робити? Наскільки я бачу, це залишає всі файли абсолютно незмінними ...
qntm

2
Деякі пакети вимагають процесу збирання. Коли ви працюєте npm installі npm знаходить пакет, який має прив'язки C / C ++ або взагалі sth, для виконання якого потрібен node-gyp, то він запускається npm build. Можна відновити ці пакети, просто запустившись npm buildокремо.
Якуб Мізіолек

4
внутрішнє командування має бути перейменовано на, _buildі npm buildвоно повинно бути ярликом на кшталт npm startіnpm test
Pawel

1
Я розумію, що npm buildмій сценарій не буде викликати, і що він використовується для складання складених компонентів пакету. Я все ще не впевнений, як це робити: які файли вони шукають тощо?
aaaidan

1
Якби я сам писав пакунок, все одно було б добре знати, що робити, щоб наповнити npm buildсенсом ...
Френк Нокк

20

Сценарій, названий як "build" package.json, не є особливим. Єдиний спосіб змусити його запустити:

npm run-script build

Є деякі імена, які викликаються автоматично npm , але "build" - це не одне з них. Повний список:

  • prepublish, publish,postpublish
  • preinstall, install,postinstall
  • preuninstall, uninstall,postuninstall
  • preversion, version,postversion
  • pretest, test,posttest
  • prestop, stop,poststop
  • prestart, start,poststart
  • prerestart, restart,postrestart
  • preCUSTOMі postCUSTOMдля власних імен сценарію.

4

Добре, щоб запустити збірку самостійно, використовуйте:

npm run-script build

3

У мене виникли проблеми з тим, щоб npm run buildнічого не надрукувати. в кінцевому рахунку, npm run build --verboseщоб отримати потрібний мені вихід.


2

Npm нарощування очікує

Папка, що містить у своєму корені файл package.json

Спробуйте використовувати сценарії npm у своєму package.json, як класичний npm start


Це означає, що це npm build .має працювати, і в моєму випадку, npm виконує сценарій "build" в моєму "package.json", як я сподівався.
Ерхунг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.