我有一个npm依赖项(例如ngx-infinite-scroll
)我正在尝试分叉(用于修复错误)并将我的分叉版本作为依赖项包含在我的应用程序中。下面是我package.json
中包含的示例:
"dependencies": {
"ngx-infinite-scroll": "github:jcroll/ngx-infinite-scroll#bugfixes",
},
在上面我已经在github上分享了repo并创建了一个名为bugfixes
的新分支。
我的问题是维护者运行一个构建过程,在./dist
目录中创建一个工件,然后使用$ npm run publish ./dist
将该平面目录发布到npm。但是,当我通过$ npm i ngx-infinite-scroll
安装新的分叉回购时,整个仓库将被下载,而不是 dist
目录。
现在我知道这应该是预期的。我希望做的一件事是至少通过添加到库dist
的脚本来安装package.json
目录:
"scripts": {
...
"prepare": "npm run build"
},
但是我仍然没有在安装时看到dist
目录。即使这样,我仍然需要更改package.json以将module
键指向这个新的嵌套目录入口点。
我希望而不是是当我从github安装这个库时,它将它的展平dist
目录发布为库的顶级目录,就像原始库一样由维护者安装构建库并运行$ npm rub publish ./dist
。有没有办法做到这一点?
编辑:我也知道通过this answer我可以构建dist并将代码提交给这个新分支,但我想要一个更优雅的方式,因此问题。
答案 0 :(得分:2)
你可以做两件事
对套餐进行更改
您有一个活动prepare
,postinstall
或install
并在同一个
"postinstall": "cd node_modules/ngx-infinite-scroll && npm i && npm run build"
然后,如果你真的想使用dist,你可以做类似下面的事情
"postinstall": "cd node_modules/ngx-infinite-scroll && npm i && npm run build && mv dist ../ngx-infinite-scroll-dist && cd .. && rm -rf ngx-infinite-scroll && mv ngx-infinite-scroll-dist ngx-infinite-scroll && cd ngx-infinite-scroll && npm i",
以叉形式构建
另一种选择是更改fork并更新package.json的postinstall
以执行npm run build
并在安装分叉包时创建dist
文件夹< /秒>
编辑:2018年3月20日
你是对的,如果我们使用postinstall
那么它将创建无限循环。您可以在prepack
事件中执行此操作。
"prepack": "node build.js",
以下是您可以进行实际测试的示例github项目
https://github.com/tarunlalwani/ngx-infinite-scroll/tree/so49242809
使用
进行测试npm add tarunlalwani/ngx-infinite-scroll#so49242809
安装后会有dist文件夹