在安装时从私有git构建npm-package

时间:2018-11-16 10:07:09

标签: npm build compilation create-react-app

我有一个私有的bitbucket存储库 A ,该文件通过npm安装在我的项目 B 中。

npm install git+ssh://git@bitbucket.org....git

那没问题。

但是现在,我想在安装后在 A 中运行构建。

默认情况下,npm带有很多脚本,例如https://docs.npmjs.com/misc/scripts

我在 A 中的package.json中尝试了postinstallprepareprepublishpreinstall

...
"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软件包。

对这个工作流程有经验吗?

2 个答案:

答案 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脚本将无法建立目录。

参考:https://docs.npmjs.com/cli/install