Nexus私有库发包流程

Nexus私有库发包流程

在软件开发中,经常会使用到各种依赖包来实现项目的功能。而这些依赖包有时候需要从公有库中下载,有时候则需要从私有库中发布。本文将针对如何使用Nexus私有库进行包的发布进行详细的介绍和实践,帮助开发者更好地管理和发布自己的包。

1. 安装依赖

首先,在使用Nexus私有库进行包的发布之前,需要安装一些工具和依赖包。在命令行中执行以下命令来安装这些依赖:

bash 复制代码
npm install -D @release-it/conventional-changelog@^2.0.1 release-it@^14.6.2
npm install -D npm-check-updates@^11.8.3 simple-git@^2.42.0 shelljs@^0.8.5

这些依赖包将用于后续的发布流程中。

2. 修改package.json中的配置

接下来,需要修改项目的package.json文件,以配置一些必要的内容。需要添加一些脚本命令和发布配置。

首先,在scripts字段中添加以下脚本命令:

json 复制代码
"scripts": {
  "release": "npm run depVerUp && npm install && release-it",
  "release-dry-run": "release-it --dry-run",
  "depVerUp": "node depVerUpgrade.js"
},

这些脚本命令将帮助进行包的发布和版本升级。

然后,在publishConfig字段中添加以下发布配置:

json 复制代码
"publishConfig": {
  "access": "public",
  "registry": "http://localhost:9999/repository/npm-private/",
  "directory": "."
},

这些配置用于指定包的发布权限和发布的私有库的地址。

3. 创建发布配套文件

为了能够顺利地发布包,需要创建一些配套的文件来进行辅助操作。在命令行中执行以下命令来创建这些文件:

bash 复制代码
touch depVerUpgrade.js .release-it.cjs

然后,需要在这些文件中填入相应的内容。

depVerUpgrade.js

depVerUpgrade.js文件的内容如下:

javascript 复制代码
/**
通过扫描项目的 package.json 文件, 检查和更新 npm 项目依赖包的工具。
特点和功能:
1. 检查依赖包的最新版本
2. 显示更新信息
3. 自定义更新策略"~"、"^"、"*"
4. 将更新后的依赖版本号直接写入到 package.json
5. 支持锁定文件(如 package-lock.json)
6. 支持npm、yarn、pnpm
 */
const ncu = require('npm-check-updates');

// 定义要升级的包列表,包括以'package1/'和'package2/'开头的所有包
const upgradePackageList = [
  'package1/*',
  'package2/*',
];

ncu.run({
  upgrade: true,
  silent: true,
  packageManager: 'yarn',
  filter: upgradePackageList,
  packageFile: './package.json',
}).then((upgraded) => {
  console.log(`当前最新版本:`, upgraded);
});

depVerUpgrade.js文件是一个通过扫描项目的package.json文件,来检查和更新项目依赖包的工具。运行这个文件可以获取最新版本的依赖包信息。

.release-it.cjs

.release-it.cjs文件的内容如下:

javascript 复制代码
module.exports = {
  hooks: {
    "after:git:release": "git push origin HEAD"
  },
  git: {
    commitMessage: "chore: release branch release ${version}",
    requireCommits: true
  },
  plugins: {
    "@release-it/conventional-changelog": {
      infile: "CHANGELOG.md",
      preset: {
        name: "conventionalcommits",
        types: [{
            type: "feat",
            section: "Features"
          },
          {
            type: "fix",
            section: "Bug Fixes"
          },
          {
            type: "docs",
            section: "Docs"
          },
          {
            type: "refactor",
            section: "Refactors"
          },
          {
            type: "style",
            section: "Refactors"
          },
          {
            type: "perf",
            section: "Performances"
          },
          {
            type: "chore",
            section: "Miscellaneous"
          },
          {
            type: "build",
            section: "Miscellaneous"
          },
          {
            type: "test",
            section: "Miscellaneous"
          }
        ]
      }
    }
  }
};

.release-it.cjs文件是一个配置文件,用于指定发布过程中的一些钩子和插件的配置。这些配置将影响发布的流程和生成的CHANGELOG文件。

4. 切换至发布包的私有域下

在发布包之前,需要将npm的registry切换至私有域下。在命令行中执行以下命令:

bash 复制代码
npm config set registry http://localhost:9999/repository/npm-private/

这样,就可以使用私有域来进行包的发布。

5. 登录

在发布之前,需要先登录到私有域。在命令行中执行以下命令:

bash 复制代码
npm login

然后,输入账号、密码和邮箱进行登录。这样,就可以进行包的发布了。

6. 发布

在进行包的发布之前,可以先运行以下命令进行一次dry-run,以便了解发布流程和可能的影响:

bash 复制代码
npm run release-dry-run

如果一切正常,可以进行实际的包发布。执行以下命令:

bash 复制代码
npm run release

这个命令将会触发脚本命令release,然后进行包的发布流程。

7. 撤销发布

如果需要撤销之前的发布,可以执行以下命令:

bash 复制代码
npm unpublish test-release-it@1.0.4 -f

这个命令将会撤销之前发布的test-release-it包的版本1.0.4

8. 登出

在包发布完成之后,可以执行以下命令来登出私有域,保护账号安全:

bash 复制代码
npm logout

9. 切换回公有域

最后,在包发布完成之后,可以将npm的registry切换回公有域,以便后续项目的正常使用。执行以下命令:

bash 复制代码
npm config set registry http://localhost:9999/repository/npm-group/

这样,包发布流程就完成了。

包中增加自定义命令

有时候,需要在包中增加一些自定义的命令,以方便开发者使用。下面是一个示例:

首先,需要创建一个bin目录,并在其中创建一个go.js文件。执行以下命令:

bash 复制代码
mkdir bin
touch bin/go.js

然后,将以下内容写入go.js文件中:

javascript 复制代码
#!/usr/bin/env node

console.log('go away!!!!');

这段代码定义了一个打印"go away!!!!"的命令。

接下来,在package.json中增加以下字段来连接这个命令:

json 复制代码
"bin": {
  "go": "./bin/go.js"
},

这样,就可以在命令行中执行go命令来触发这个自定义命令了。

然后,执行以下命令将这个包链接到全局:

bash 复制代码
npm link

这样,就可以在命令行中直接执行自定义的go命令了。

如果想测试一下这个自定义命令的效果,可以创建一个新的项目,并在其中执行以下命令:

bash 复制代码
mkdir raw-test && cd raw-test && yarn init -y && code . && exit

这个命令将在当前目录下创建一个新的项目,并打开编辑器。

为了避免干扰,需要在执行完测试后取消全局链接。执行以下命令:

bash 复制代码
npm unlink test-release-it

这样,就可以在测试项目中安装这个包,并执行自定义的go命令了:

bash 复制代码
yarn add -D test-release-it
npx test-release-it go

尽管使用npx命令执行自定义命令效果相同,但在全局链接的情况下会更方便和高效。

声明包过时

如果某个包不再维护,可以在package.json中添加deprecated字段来声明该包已过时。只需在该字段中提供一条提示信息即可:

json 复制代码
"deprecated": "This package is no longer maintained. Please use the new-package instead."

这样,当用户通过npm安装或更新包时,将会得到该过时警告信息。

总结

本文对如何使用Nexus私有库发包的过程进行了详细的说明和实践。通过以上步骤,可以方便地发布和管理自己的包,并有效地提高开发效率。

相关推荐
崔庆才丨静觅11 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby606112 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了12 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅12 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅12 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅13 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment13 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅13 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊13 小时前
jwt介绍
前端
爱敲代码的小鱼13 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax