我如何列出一个私人Github回购作为“依赖”在package.json?我尝试了npm的Github url语法,如ryanve/example,但在包文件夹中进行npm安装会给出“无法安装”的私人依赖错误。是否存在依赖私有回购的特殊语法(或其他机制)?
当前回答
git有https格式
https://github.com/equivalent/we_demand_serverless_ruby.git
此格式接受用户名+密码
https://bot-user:xxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/equivalent/we_demand_serverless_ruby.git
所以你能做的就是创建一个新用户,它将被用作机器人, 只添加足够的权限,使他能够读取存储库 想要加载NPM模块,并直接在你的 packages.json
Github > Click on Profile > Settings > Developer settings > Personal access tokens > Generate new token
在“选择作用域”部分,检查“on repo:完全控制私有存储库”
这样令牌就可以访问用户可以看到的私有回购
现在,在组织中创建新组,将该用户添加到组中,并仅添加所需的存储库 这样拉(只读权限!)
您需要确保只将此配置推到私有回购
然后您可以将此添加到您的/包中。Json (bot-user is 用户名,XXXXXXXXX是生成的个人令牌)
// packages.json
{
// ....
"name_of_my_lib": "https://bot-user:xxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/ghuser/name_of_my_lib.git"
// ...
}
https://blog.eq8.eu/til/pull-git-private-repo-from-github-from-npm-modules-or-bundler.html
其他回答
我无法在Docker容器中使已接受的答案工作。
对我有用的是在一个名为.netrc的文件中设置来自GitHub的个人访问令牌
ARG GITHUB_READ_TOKEN
RUN echo -e "machine github.com\n login $GITHUB_READ_TOKEN" > ~/.netrc
RUN npm install --only=production --force \
&& npm cache clean --force
RUN rm ~/.netrc
在package.json
"my-lib": "github:username/repo",
git有https格式
https://github.com/equivalent/we_demand_serverless_ruby.git
此格式接受用户名+密码
https://bot-user:xxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/equivalent/we_demand_serverless_ruby.git
所以你能做的就是创建一个新用户,它将被用作机器人, 只添加足够的权限,使他能够读取存储库 想要加载NPM模块,并直接在你的 packages.json
Github > Click on Profile > Settings > Developer settings > Personal access tokens > Generate new token
在“选择作用域”部分,检查“on repo:完全控制私有存储库”
这样令牌就可以访问用户可以看到的私有回购
现在,在组织中创建新组,将该用户添加到组中,并仅添加所需的存储库 这样拉(只读权限!)
您需要确保只将此配置推到私有回购
然后您可以将此添加到您的/包中。Json (bot-user is 用户名,XXXXXXXXX是生成的个人令牌)
// packages.json
{
// ....
"name_of_my_lib": "https://bot-user:xxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/ghuser/name_of_my_lib.git"
// ...
}
https://blog.eq8.eu/til/pull-git-private-repo-from-github-from-npm-modules-or-bundler.html
它可以通过https和oauth或ssh来完成。
HTTPS和oauth:创建一个具有“repo”作用域的访问令牌,然后使用以下语法:
"package-name": "git+https://<github_token>:x-oauth-basic@github.com/<user>/<repo>.git"
or
安装Ssh,然后使用下面的语法:
"package-name": "git+ssh://git@github.com:<user>/<repo>.git"
(注意在user前使用冒号而不是斜杠)
虽然这是一个老问题,但在这里添加一个跨平台的答案。
npm v7访问node_modules中的私有存储库的通用语法是-
git+https://<token_name>:<token>@<path_to_repository>.git#<commit>
你必须用你的git服务提供者创建一个至少具有读访问权限的访问令牌。
以下是最流行的平台链接:
github gitlab bitbucket都
请注意,github创建的令牌链接到您的用户名,没有令牌名称,因此,使用您的用户名而不是token_name的github。
如果有人正在为Git Lab寻找其他选项,而上面的选项不起作用,那么我们还有另一个选项。对于Git Lab服务器的本地安装,我们发现下面的方法允许我们包含包依赖项。为此,我们生成并使用一个访问令牌。
$ npm install --save-dev https://git.yourdomain.com/userOrGroup/gitLabProjectName/repository/archive.tar.gz?private_token=InsertYourAccessTokenHere
当然,如果以这种方式使用访问键,它应该具有有限的权限集。
好运!
推荐文章
- 我应该在.gitignore文件中添加Django迁移文件吗?
- CALL_AND_RETRY_LAST分配失败-进程内存不足
- 错误:您对以下文件的本地更改将被签出覆盖
- 在Ubuntu上安装Node.js
- 使用express.js代理
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?
- 跟踪所有远程git分支作为本地分支
- 自定义SSH端口上的Git
- git如何显示不存在于.gitignore中的未跟踪文件
- 在另一个目录中运行操作
- Git错误:遇到7个文件应该是指针,但不是
- Node -使用NODE_MODULE_VERSION 51根据不同的Node.js版本编译
- GitHub克隆与OAuth访问令牌
- 移动(或“撤销”)最后一个git提交到非暂存区域