假设我已经为Node.js写了一个模块,我想保持私有。我知道我可以(应该)加上这一行:

"private": "true"

打开包裹。我也知道我可以npm安装这个模块使用文件系统路径或链接到一个git存储库,包括GitHub。

我也知道我可以把这样的文件系统路径或链接到一个git回购包。Json,这样依赖关系部分看起来就像这样:

"dependencies": {
  "myprivatemodule": "git@github.com:..."
}

我现在想要的不是链接到最新的版本,而是一个特定的版本。我所知道的唯一可能是使用其ID链接到特定的提交。但是,与使用0.3.1这样的版本号相比,这样的版本号可读性更差,可维护性也更差。

所以我的问题是:无论如何,是否可以指定这样一个版本号,并让npm搜索git存储库中包含该版本的最新提交?

如果不是,你如何在你的项目中解决这个问题?您是否使用提交id,或者是否有更好的解决方案?


当前回答

我在这里描述了我在运行npm install时遇到的一个问题——包没有出现在node_modules中。

问题是package中的name值。安装包的Json与导入包的名称(key in package. Json)不一致。Json的我的项目)。

因此,如果您安装的项目名称是some-package (name值在其package.json),那么 在包中。Json你的项目写:"some-package": "owner/some-repo#标签"。

其他回答

这个命令从特定的git提交中安装npm包用户名/包:

npm install https://github.com/username/package#3d0a21cc

这里3d0a21cc是提交哈希的前8个字符。

公认的答案对我不起作用。

这是我正在做的从github拉包:

npm install --save "git://github.com/username/package.git#commit"

或者手动添加到package.json:

"dependencies": {
  "package": "git://github.com/username/package.git#commit"
}

下面是完整的npm文档:

https://docs.npmjs.com/cli/v9/configuring-npm/package-json?v=true#git-urls-as-dependencies

如果你用不止一个模块做这件事,并且想要对版本有更多的控制,你应该考虑拥有你自己的私有npm注册表。

这样你就可以把你的模块发布到你的私有npm注册表中并使用包。Json条目与处理公共模块的方法相同。

https://docs.npmjs.com/files/package.json#dependencies

我在这里描述了我在运行npm install时遇到的一个问题——包没有出现在node_modules中。

问题是package中的name值。安装包的Json与导入包的名称(key in package. Json)不一致。Json的我的项目)。

因此,如果您安装的项目名称是some-package (name值在其package.json),那么 在包中。Json你的项目写:"some-package": "owner/some-repo#标签"。

通过指定版本描述符,必须从注册表中获得要安装的依赖项。

如果您的项目不应该公开共享,您当然可以创建和使用您自己的注册中心,而不是registry.npmjs.org。

但是,如果它不在注册表中,它必须通过URL或Git URL引用。要使用Git URL指定版本,请在末尾包含适当的<commit-ish>,例如标记,作为URL片段。

例如,对于一个名为0.3.1的标记:

"dependencies": {
  "myprivatemodule": "git@github.com:...#0.3.1"
}

注意:上面的代码片段显示了与问题中发布的相同的基本URL。 剪掉的部分(…)应填写: :“myprivatemodule git@github.com:{所有者}/{项目}. # 0.3.1” 并且,当SSH访问不可用时,需要一个不同的地址格式: :“myprivatemodule git: / / github.com/{所有者}/{项目}. # 0.3.1”


取决于你的操作系统,你也可以链接到你从Github克隆的另一个文件夹中的依赖项。