npm run: выполняет другой (неверный) скрипт - PullRequest
0 голосов
/ 14 февраля 2019

Это секция scripts моего package.json:

"scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "compile-prebuild": "tsc -p prebuild-tsconfig.json --pretty",
    "prebuild": "ts-node --project PreBuild/tsconfig.json PreBuild/prebuild.ts",

    "testJs": "node test.js",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "extract-i18n": "ng xi18n Paradise --i18n-format=xlf2 --output-path=i18n --i18n-locale=en && ng run Paradise:xliffmerge"
},

Замечательно, что , когда я пытаюсь npm run build или npm run build -- --prod, выполняется другой скрипт (prebuild):

> npm run build -- --prod

> project@0.1.1 prebuild ...
> ts-node --project PreBuild/tsconfig.json PreBuild/prebuild.ts

Теперь, если я переименую скрипт prebuild в pre-buildpackage.json), все будет хорошо:

> npm run build -- --prod

> project@0.1.1 build ...
> ng build "--prod"
...

Сейчас, если я вернулся обратно, проблема появляется снова!


> npm -v
6.7.0

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Предварительный и последующий хуки запускаются автоматически по npm.Если вы определили prebuild в вашем package.json, npm запустит его автоматически, когда вы попросите его запустить build.То же самое относится и к почтовому крючку.

Вы можете ознакомиться с документацией здесь.https://docs.npmjs.com/misc/scripts

0 голосов
/ 14 февраля 2019

Это "правильно", так как это задокументированное поведение npm - см. здесь .

Кроме того, произвольные сценарии могут быть выполнены при запуске npm run-script <stage>,Команды pre и post с совпадающими именами также будут выполняться для них (например, premyscript, myscript, postmyscript).

Как правило, сценарии могут иметь префикс pre или post делать что-то до или после скрипта.

Лучше всего рассматривать префиксы pre и post как зарезервированные при выборе имен скриптов npm (если только вы не собираетесь запускать их до или послеглавная задача, конечно).

...