我有一个私有的bitbucket存储库 A ,该文件通过npm安装在我的项目 B 中。
npm install git+ssh://git@bitbucket.org....git
那没问题。
但是现在,我想在安装后在 A 中运行构建。
默认情况下,npm带有很多脚本,例如https://docs.npmjs.com/misc/scripts
我在 A 中的package.json中尝试了postinstall
,prepare
,prepublish
,preinstall
:
...
"scripts": {
"prepublish": "npm run build",
"build": "...",
...
在 B 中安装软件包 A 时,出现npm错误:npm ERR! premature close
我想在安装时运行构建,以从git( A )中删除构建文件。 在这种情况下,构建将运行webpack + babel编译。
项目 B 是使用create-react-app创建的。 我不想弹出create-react-app,设置webpack或编译所有node_modules软件包。
对这个工作流程有经验吗?
答案 0 :(得分:0)
仅将您的项目A添加为package.json中的依赖项就无需弹出项目B。对于项目A,请使用"preinstall"
,它将在每次npm安装之前运行,包括在项目B上运行npm install时运行。就我而言,我刚刚对其进行了测试,它在我的机器上可以正常工作。如果您遇到问题,我认为可能是因为您构建问题的方式?那么您可以向我们展示构建脚本吗?
答案 1 :(得分:0)
使用prepare
,因为根据NPM文档,它将在打包和安装软件包之前先安装依赖项和devDependencies。
如果您使用Typescript进行编译或进行转换,这会很有帮助。
...
"scripts": {
"prepare": "npm run build",
"build": "...",
...
注意:如果您的dist/build
目录在.gitignore
中被忽略。向您的存储库添加一个空的.npmignore
文件;否则prepare
脚本将无法建立目录。