`npm build` не запускает script с именем "build" в package.json

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

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

My build.js просто

console.log('Hello')

Однако, работая

npm build

Просто выходит без печати ничего, со статусом 0.

Продолжительность:

npm install

Также выполняет все обычные действия, но не запускает build.js.

Как я могу заставить npm запустить мою сборку script?

Изменить: даже простые команды bash не работают, например

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

Не создает файл с таким именем.

Ответ 1

К сожалению, npm build уже является внутренней командой, как описано в документации:

Это сантехническая команда, которая вызывается с помощью npm link и npm install. Как правило, не следует вызывать напрямую.

Поскольку эта команда уже существует, она всегда "build": "node build.js" ваш "build": "node build.js".

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

$ npm run build

npm start и другие - это краткий путь, но он возможен только тогда, когда существующая команда npm не затеняет ее, как это делает npm build.


Для потомков (как уже упоминалось) npm build используется npm для сборки нативных аддонов C/C++ Node с использованием node-gyp. Это плохо документировано, потому что обычно это происходит автоматически, но если вам интересно, исходный код здесь.

Ответ 2

script, названный как "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 для пользовательских имен script.

Ответ 3

ОК, чтобы запустить сборку самостоятельно, используйте:

npm run-script build

Ответ 4

У меня возникла проблема с npm run build не печатать ничего. закончил с помощью npm run build --verbose, чтобы получить требуемый результат.

Ответ 5

Npm build ожидает

Папка, содержащая файл package.json в корневом каталоге

Попробуйте использовать npm scripts в вашем пакете. json, как и классический запуск npm

Ответ 6

Я пробовал npm run build несколько раз и продолжаю получать ошибку сценария не найдена.