如何创建托管在 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 集成

使用 NPM 发布包时出现 GitLab '404 Not Found' 错误

从私有 gitlab 注册表安装多个 npm 包

npx:一个npm包执行器