如何将功能分支从分叉的GitHub repo加载到我的应用程序中?

如何将功能分支从分叉的GitHub repo加载到我的应用程序中?,git,github,npm,Git,Github,Npm,这感觉像是一个人们不应该问的问题,但我在过去的3个小时里一直在寻找如何做到这一点,我想不出来 以下是我想做的: import Widget from '@username/vue-widget'; 1) 从GitHub repo中派生一个库,我们称之为vue小部件 2) 我需要以某种方式在本地机器上获取文件,大多数文档都说要进行git克隆https://www.github.com/username/vue-widget.git 我的问题马上从这里开始,因为我不知道如何将库加载到我的项目中。我

这感觉像是一个人们不应该问的问题,但我在过去的3个小时里一直在寻找如何做到这一点,我想不出来

以下是我想做的:

import Widget from '@username/vue-widget';
1) 从GitHub repo中派生一个库,我们称之为
vue小部件

2) 我需要以某种方式在本地机器上获取文件,大多数文档都说要进行
git克隆https://www.github.com/username/vue-widget.git

我的问题马上从这里开始,因为我不知道如何将库加载到我的项目中。我正在努力做到:

import Widget from '@username/vue-widget';
让我非常沮丧的是,我能找到的所有帮助文档都是这样写的,就好像我在做一个1个字符的更改,然后提交一个pull请求,但我正在做一个潜在的广泛修改,所以我需要在我的应用程序中运行修改后的功能分支我找不到该怎么做。

我从NPM中找到一些文档,表明我可能能够使用范围包,但我不知道这是否是必需的。我真的需要分叉一个项目,然后在NPM上以我自己的名义发布它吗?还是有更快更简单的方法

我还了解,我可以在导入中包含哈希,如:

import Widget from '@username/vue-widget#ose847vg6seo5489ve4e45n';
我完全不知道如何从我的forked repo中的一个特性分支导入
小部件
。我想知道做这件事最常见和惯用的方法是什么

我的期望是有一种方法可以克隆我的forked repo,创建一个功能分支,将其加载到我的应用程序中,修改它,然后在它准备好时提交一个pull请求

[编辑]:我的问题是,我正在分叉的库在.gitignore文件中有
/dist
文件夹,因此由于没有生成这些文件,我的安装无法正确初始化

解决方案是从.gitignore文件中删除
/dist
,然后运行:

npm run build
git add .
git commit -m "removed /dist from gitignore"
git push origin featureA
然后,回到您试图将分叉库放入的项目中,执行Max展示的解决方案。在我的例子中,我将其添加到我的
package.json
文件中,然后运行
npm安装

"vue-widget": "username/vue-widget#featureA"
以下是我花了一段时间才发现的一些有用的链接:

这就是我真正解决问题的原因:


请务必阅读下面的评论,因为有两个关于
npm link
的很好的URL,在实际情况下非常有用。

如果您可以通过分叉回购进行安装,您可以在下面执行此操作

npm install --save git+https://git@github.com/[username]/[package name].git
如果需要在本地链接模块,可以执行以下操作。使用npm链接

  • 进入您正在本地处理的项目,并从npm注册表中保存您要使用的模块
  • 现在,在本地克隆您想要的分叉回购。不要忘记
    npmi
    该模块的依赖项
  • 在该分叉目录中运行
    npm-link
    。这应该将这些分叉文件链接到本地引用。任何时候,如果您想在其他本地项目中看到此本地模块中的更改或切换分支,则必须运行
    npm link
  • 现在转到您正在本地工作的项目,运行
    npm链接[您在本地分叉和克隆的模块]
  • 重新启动项目,您应该会看到更改

  • npm link
    可能有点挑剔,但是当您运行步骤4时,您应该会看到本地链接文件的文件路径。

    您想在生产项目中使用包的分支,还是只想在本地使用分支?不是在生产中,但我想这需要一个公共的npm范围的解决方案。我想知道我应该将repo克隆到哪里,然后如何导入它,以便它导入我的功能分支。这样,您就可以安装包的分支。下面的链接对此进行了解释。或者我可以解释什么是
    npm-link
    。查看并让我知道:谢谢,这是一组有用的链接。我之前尝试过,但在我运行项目后,它抛出了
    模块未找到:错误:无法解析“vue小部件”
    。它将此添加到package.json:
    “vue小部件”:“github:username/vue小部件#featureA”
    。这样做之后,在执行
    链接之后,它会显示
    未找到模块:错误:无法解析“vue小部件”
    。当依赖项名称与维护人员提供的常规包相同时,似乎很难做到这一点。运行npm安装后,它没有将任何内容放入我的node_modules文件夹。@agm1984您不必进行链接,因为您是从github采购模块的。你可能因为链接而弄乱了名称空间。我刚刚键入了
    npm link
    试图获取链接列表,这是一次天真的尝试,它实际上是将
    vue widget
    添加到我的node\u modules文件夹中,但输出了相同的错误。我不明白加载分叉版本怎么会如此困难。一定有什么我错过了。这是错的吗<代码>从“vue小部件”导入小部件
    有没有什么方法可以让它忘记NPM,像从“../vue Widget”
    导入Widget一样。这样,项目就不必关心加载的是哪个分支。它将只加载当前选择的任何分支。@agm1984。您必须能够将该模块安装到您的项目中,因为当您的项目运行时,您调用
    import
    require
    时,您的应用程序将查看该模块的节点模块。在本地,您可以
    npm link
    告诉您的应用程序查看本地文件,而不是节点模块中的内容,但您仍然需要在json包中使用该引用