NPM 打包分叉 Git 存储库的 BUILT 版本的正确方法是啥?

Posted

技术标签:

【中文标题】NPM 打包分叉 Git 存储库的 BUILT 版本的正确方法是啥?【英文标题】:What is the correct way with NPM to package a BUILT version of a forked Git repository?NPM 打包分叉 Git 存储库的 BUILT 版本的正确方法是什么? 【发布时间】:2016-07-09 14:12:44 【问题描述】:

我最近创建了一个 GitHub 存储库来解决一个问题,并创建了一个拉取请求。在等待拉取请求被接受时,我已将本地 package.json 指向我的分叉存储库,如下所示:

devDependencies: 
    "karma-mocha": "maloric/karma-mocha"

但事实证明,karma-mocha 需要执行构建步骤来生成 lib/adapter.js - 包的重要组成部分。该文件在.gitignore 中列出,因此在存储库中不存在。 build 步骤是一个 grunt 任务,通常在包发布到 npm 时执行,所以下载的 npm 模块中存在adapter.js

我的问题是:打包存储库的分叉构建版本以便我可以将其用作依赖项的正确方法是什么?据我所知,我有以下选择:

    在本地构建存储库,使用构建的文件创建一个 .tgz 文件,然后将其托管在某处并将我的 package.json 指向该文件。 在本地构建存储库,更改 .gitignore 以允许 adapter.js,然后推送到 Github 上的一个分支并将该分支用作我的依赖项。

其中任何一个都可以,但我觉得我错过了一些东西。 npm 有分叉包的概念吗?不是每个 git 存储库都可以在没有某种 build/dist 步骤的情况下用作依赖项,那么做这种事情的公认方法是什么?

【问题讨论】:

【参考方案1】:

这似乎类似于karma-runner/karma-jasmine issue 38,不完全相同的库,但相同的想法,以及adapter.js的问题:

正如您正确指出的那样,grunt build 生成的adapter.js。当我们运行 grunt release 时,adpater.js 仅放置在 npm 存储库中。

如果您想使用您的karma-jasmine 版本,那么您可以从.gitignore 中删除lib/adapter.js

所以选项 2。

【讨论】:

以上是关于NPM 打包分叉 Git 存储库的 BUILT 版本的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 npm 从分叉的 github 存储库安装

如何将分叉的 lerna 存储库的子包安装为节点依赖项?

NPM 发布模块未检测到 git 存储库

将 Git 存储库从 GitHub 分叉到 GitLab

如何将来自 Git 的分叉存储库包含到我的 Eclipse Java 项目中?

如何在不分叉的情况下在 gitlab/github 上复制 git 存储库?