这是我的scripts
的{{1}}部分:
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-build
中),一切都会好起来的:
package.json
现在,如果我退回去,问题又出现了!
> npm run build -- --prod
> project@0.1.1 build ...
> ng build "--prod"
...
答案 0 :(得分:1)
这是“正确的”,因为这是npm
的记录行为-请参见here。
此外,可以通过运行
npm run-script <stage>
执行任意脚本。具有匹配名称的前后命令也将针对它们运行(例如premyscript
,myscript
,postmyscript
)。
通常,脚本可以以pre
或post
开头,以在脚本之前或之后执行操作。
选择npm脚本名称时,最好考虑将前缀pre
和post
保留下来(当然,除非您希望它们始终在主要任务之前或之后运行)。
答案 1 :(得分:1)
pre和post挂钩由npm自动运行。如果在package.json中定义了预构建,则npm会在要求其运行构建时自动运行它。帖子挂钩也是如此。
您可以在此处查看文档。 https://docs.npmjs.com/misc/scripts