yarn add安装GitHub上的TypeScript自定义包时如何自动执行build脚本?
解决Yarn安装GitHub TypeScript包时自动构建的问题
先直接给你明确答案:Yarn在执行yarn add https://github.com/me/myrepo/时,默认不会自动运行npm run build——这和npm的默认行为确实不一样,咱们一步步拆解问题和解决办法:
为什么npm能自动执行build?
其实npm安装Git仓库的包时,会自动触发包内的prepare生命周期脚本。如果你的build脚本被自动执行了,要么是你无意中在package.json里配置了prepare并调用了build(比如"prepare": "npm run build"),要么是部分npm版本对Git包有特殊处理,但最规范的方式还是显式绑定生命周期脚本。
让Yarn自动执行构建的三种方法
1. 配置prepare脚本(最推荐)
prepare是npm和Yarn都认可的标准生命周期脚本,只要在你的包的package.json里加上它,不管用哪个包管理器安装,都会自动触发构建:
"scripts": { "build": "tsc", "prepare": "npm run build" }
把代码提交到GitHub后,下次用yarn add https://github.com/me/myrepo/安装时,Yarn就会自动先跑npm run build完成TypeScript编译,和npm的行为保持一致。
2. 手动执行构建(临时方案)
如果暂时不想修改包的配置,可以在安装后手动进入包目录执行构建,命令如下:
yarn add https://github.com/me/myrepo/ && cd node_modules/myrepo && yarn run build && cd ../..
不过这种方式每次安装都要额外操作,适合临时测试,不推荐长期用。
3. 升级Yarn版本(排查旧版本问题)
如果你用的是非常旧的Yarn版本(比如Yarn 1.x早期版本),可能存在生命周期脚本不触发的bug。建议升级到最新的稳定版Yarn(不管是Yarn Classic还是Yarn Berry),确保脚本能正常识别和执行。
内容的提问来源于stack exchange,提问作者Akumachan




