假设我已经为Node.js写了一个模块,我想保持私有。我知道我可以(应该)加上这一行:
"private": "true"
打开包裹。我也知道我可以npm安装这个模块使用文件系统路径或链接到一个git存储库,包括GitHub。
我也知道我可以把这样的文件系统路径或链接到一个git回购包。Json,这样依赖关系部分看起来就像这样:
"dependencies": {
"myprivatemodule": "git@github.com:..."
}
我现在想要的不是链接到最新的版本,而是一个特定的版本。我所知道的唯一可能是使用其ID链接到特定的提交。但是,与使用0.3.1这样的版本号相比,这样的版本号可读性更差,可维护性也更差。
所以我的问题是:无论如何,是否可以指定这样一个版本号,并让npm搜索git存储库中包含该版本的最新提交?
如果不是,你如何在你的项目中解决这个问题?您是否使用提交id,或者是否有更好的解决方案?
如果你所说的版本是指一个标签或一个版本,那么github提供了这些版本的下载链接。例如,如果我想安装fetch 0.3.2版本(它在npm上不可用),那么我添加到我的包中。依赖项下的Json:
"fetch": "https://github.com/github/fetch/archive/v0.3.2.tar.gz",
与提交哈希方法相比,唯一的缺点是哈希保证不会表示更改的代码,而标记可以被替换。值得庆幸的是,这种情况很少发生。
更新:
这些天我使用的方法是一个GitHub服务依赖的紧凑符号:
"dependencies": {
"package": "github:username/package#commit"
}
commit可以是任何有commit性质的东西,比如标签。在GitHub的情况下,你甚至可以删除初始的GitHub:因为它是默认的。
我需要运行两个版本的tfjs-core,发现这两个版本都需要在安装后进行构建。
package.json:
"dependencies": {
"tfjs-core-0.14.3": "git://github.com/tensorflow/tfjs-core#bb0a830b3bda1461327f083ceb3f889117209db2",
"tfjs-core-1.1.0": "git://github.com/tensorflow/tfjs-core#220660ed8b9a252f9d0847a4f4e3c76ba5188669"
}
然后:
cd node_modules/tfjs-core-0.14.3 && yarn install && yarn build-npm && cd ../../
cd node_modules/tfjs-core-1.1.0 && yarn install && yarn build-npm && cd ../../
最后,使用库:
import * as tf0143 from '../node_modules/tfjs-core-0.14.3/dist/tf-core.min.js';
import * as tf110 from '../node_modules/tfjs-core-1.1.0/dist/tf-core.min.js';
这很有效,但肯定是#hoodrat