npm运行:执行另一个(不正确)脚本

npm运行:执行另一个(不正确)脚本,npm,npm-scripts,Npm,Npm Scripts,这是我的包的脚本部分。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", "t

这是我的
包的
脚本部分。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
脚本重命名为
prebuild
(在
package.json
中),一切都会好起来:

> npm run build -- --prod

> project@0.1.1 build ...
> ng build "--prod"
...
现在,如果我回到后面,问题又出现了


这是“正确的”,因为这是npm的记录行为-请参阅

此外,可以通过运行
npm run script
执行任意脚本。具有匹配名称的Pre和post命令也将针对这些脚本运行(例如,
premyscript
myscript
postmyscript

通常,脚本的前缀可以是
pre
post
,以在脚本之前或之后执行操作


<> PN>在选择NPM脚本名称时,最好考虑前缀<代码>预<代码>和<代码> POST <代码>(除非您希望它们总是在主任务之前或之后运行)。

前钩子和后挂钩由NPM自动运行。如果您在package.json中定义了预构建,npm将在您要求它运行构建时自动运行它。同样的情况也适用于柱钩

您可以在这里查看文档

> npm -v
6.7.0