如何创建托管在 Gitlab 上的 npm CLI 包
Posted
技术标签:
【中文标题】如何创建托管在 Gitlab 上的 npm CLI 包【英文标题】:How to create an npm CLI package hosted on Gitlab 【发布时间】:2021-07-08 07:52:00 【问题描述】:我的目标是创建一个 CLI 脚本以全局安装 (npm i -g @born05/cli
)。
我的 package.json:
"name": "@born05/cli",
"version": "1.0.7",
"description": "The Born05 handy-dandy development Command Line Interface",
"main": "lib/cli.js",
"author":
"name": "Niels Wijers",
"email": ""
,
"bin":
"born05": "lib/cli.js"
,
"engines":
"node": ">=12.0.0"
,
"license": "ISC",
"publishConfig":
"@born05:registry": "https://gitlab.born05.com/api/v4/projects/147/packages/npm/"
,
"bundleDependencies": false,
"deprecated": false,
"dependencies":
"findit": "^2.0.0",
"inquirer": "^7.3.3",
"js-yaml": "^4.0.0",
"tar": "^6.1.0"
脚本是在本地创建和测试的,它可以工作,即使在npm link
之后,在我的终端中输入born05
时脚本也可以工作。但是在全局发布和安装后,无法将 cli.js 链接到 bin 目录,但安装成功。
我的 .gitlab-ci.yml
stages:
- publish
publish:
stage: publish
image: node:15.0-slim
before_script:
- npm install
- |
echo "@born05:registry=$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/npm/"
echo "$CI_API_V4_URL#https?/projects/$CI_PROJECT_ID/packages/npm/:_authToken=\$CI_JOB_TOKEN"
| tee --append .npmrc
script:
- npm publish
我的 .npmrc
@born05:registry = "https://gitlab.born05.com/api/v4/packages/npm/"
//gitlab.born05.com/api/v4/packages/npm/:_authToken = (protected)
希望有人能帮助我。
【问题讨论】:
【参考方案1】:我遇到了同样的问题,我的解决方法是手动导出参数:
- npm install
- |
echo "@born05:registry=$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/npm/"
echo "$CI_API_V4_URL#https?/projects/$CI_PROJECT_ID/packages/npm/:_authToken=\$CI_JOB_TOKEN"
| tee --append .npmrc
- export NPM_CONFIG_REGISTRY=$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/npm/
【讨论】:
以上是关于如何创建托管在 Gitlab 上的 npm CLI 包的主要内容,如果未能解决你的问题,请参考以下文章
vue-cli v3 与 node.js firebase 函数,firebase 托管(错误:在函数源目录中找不到 npm 包)
如何使用 CLI 从我现有的本地 git 存储库创建新的 gitlab 存储库?
将 GitKraken 与子目录上的大学自托管 GitLab 集成