我如何列出一个私人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
其他回答
NPM在回购中没有访问令牌
这种方法要求使用包的任何人都使用自己的个人访问令牌进行身份验证,而不是使用单个组令牌,这允许回购不含访问令牌。你也不需要每次用户不再被授予访问权时都创建一个新的访问令牌,相反,从GitHub的repo中删除用户将自动删除他们的包访问权。
这是GitHub的NPM指南的浓缩版:https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry
发布你的GitHub回购作为一个NPM包
在开发人员设置中创建个人访问令牌:https://github.com/settings/tokens 登录NPM
npm login --scope=@<USERNAME of repo owner in lowercase> --registry=https://npm.pkg.github.com
Username: <Your personal GitHub username>
Password: <Create a GitHub Access Token with your account and paste it here>
Email: <Email associated with the same account>
例如:用户@Bobby希望将github.com/Jessica/my-npm-package作为NPM包发布
npm login --scope=@jessica --registry=https://npm.pkg.github.com
Username: bobby
Password: yiueytiupoasdkjalgheoutpweoiru
Email: bobby@example.com
更新包。Json,按照下面的格式。
"name": "@jessica/my-npm-package",
"repository": "git://github.com/jessica/my-npm-package.git",
"publishConfig": {
"registry":"https://npm.pkg.github.com"
},
要发布NPM包,运行:
npm publish
在项目中安装一个私有NPM包
以与上面第2步完全相同的方式登录NPM。 使用npm Install @jessica/my-npm-package安装这个包
完成了!
如果你的项目有需要安装这个私有NPM包的GitHub Actions脚本,请继续阅读。
GitHub操作:如何安装一个私有NPM包
In a CI environment, you'll also need npm login to similarly authenticate. Otherwise, npm install will fail, since it doesn't have access to the private NPM package. One way to pre-configure this is to use a .npmrc file; however, this commits auth credentials to the repo with that file. So, another way is to use the NPM tool npm-cli-login. There is a requirement that you either use your own personal access token (not optimal: you leave the repo, CI breaks), or set up a GitHub account specifically for CI and create an access token with that account.
使用CI-only GitHub帐户创建访问令牌,或从您自己的GitHub帐户中获取访问令牌。 在回购设置中将该访问令牌作为“秘密”添加到您的回购中。 更新你的GitHub Actions工作流脚本,在你安装NPM之后和运行NPM install之前运行这一步:
- name: Login to GitHub private NPM registry
env:
CI_ACCESS_TOKEN: ${{ secrets.NAME_OF_YOUR_ACCESS_TOKEN_SECRET }}
shell: bash
run: |
npm install -g npm-cli-login
npm-cli-login -u "USERNAME" -p "${CI_ACCESS_TOKEN}" -e "EMAIL" -r "https://npm.pkg.github.com" -s "@SCOPE"
替换NAME_OF_YOUR_ACCESS_TOKEN_SECRET,用户名,电子邮件和范围。
例如
- name: Login to GitHub private NPM registry
env:
CI_ACCESS_TOKEN: ${{ secrets.MY_TOKEN }}
shell: bash
run: |
npm install -g npm-cli-login
npm-cli-login -u "ci-github-account" -p "${CI_ACCESS_TOKEN}" -e "ci-github-account@example.com" -r "https://npm.pkg.github.com" -s "@jessica"
完成了!
现在,当GitHub Actions稍后运行npm install时,脚本将可以访问私有npm包。
供你参考:如果你熟悉GitHub Actions,你可能会问为什么我们不能使用秘密。GITHUB_TOKEN哪个GitHub自动提供?原因在于秘密。GITHUB_TOKEN只能访问运行GitHub Actions的repo,它不能访问私有NPM包的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
如果有人正在为Git Lab寻找其他选项,而上面的选项不起作用,那么我们还有另一个选项。对于Git Lab服务器的本地安装,我们发现下面的方法允许我们包含包依赖项。为此,我们生成并使用一个访问令牌。
$ npm install --save-dev https://git.yourdomain.com/userOrGroup/gitLabProjectName/repository/archive.tar.gz?private_token=InsertYourAccessTokenHere
当然,如果以这种方式使用访问键,它应该具有有限的权限集。
好运!
虽然这是一个老问题,但在这里添加一个跨平台的答案。
npm v7访问node_modules中的私有存储库的通用语法是-
git+https://<token_name>:<token>@<path_to_repository>.git#<commit>
你必须用你的git服务提供者创建一个至少具有读访问权限的访问令牌。
以下是最流行的平台链接:
github gitlab bitbucket都
请注意,github创建的令牌链接到您的用户名,没有令牌名称,因此,使用您的用户名而不是token_name的github。
它可以通过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前使用冒号而不是斜杠)
推荐文章
- Bower: ENOGIT Git未安装或不在PATH中
- 为什么在节点REPL中没有定义__dirname ?
- Bitbucket上的Git:总是要求密码,即使上传了我的公共SSH密钥
- Git别名-多个命令和参数
- 在Node.js中克隆对象
- 如何添加一个“打开git-bash这里…”上下文菜单到windows资源管理器?
- Node.js中的process.env.PORT是什么?
- js的Mongoose.js字符串到ObjectId函数
- ELIFECYCLE Node.js错误是什么意思?
- npm -D标志是什么意思?
- 新Github项目发布通知?
- 是否可以在Git中只提取一个文件?
- 当我做“git diff”的时候,我怎么能得到一个并排的diff ?
- 在git中如何将提交移动到暂存区?
- 如何缩小。git文件夹