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私有库发包的过程进行了详细的说明和实践。通过以上步骤,可以方便地发布和管理自己的包,并有效地提高开发效率。

相关推荐
web1478621072332 分钟前
C# .Net Web 路由相关配置
前端·c#·.net
m0_7482478033 分钟前
Flutter Intl包使用指南:实现国际化和本地化
前端·javascript·flutter
飞的肖37 分钟前
前端使用 Element Plus架构vue3.0实现图片拖拉拽,后等比压缩,上传到Spring Boot后端
前端·spring boot·架构
青灯文案144 分钟前
前端 HTTP 请求由 Nginx 反向代理和 API 网关到后端服务的流程
前端·nginx·http
m0_748254881 小时前
DataX3.0+DataX-Web部署分布式可视化ETL系统
前端·分布式·etl
ZJ_.1 小时前
WPSJS:让 WPS 办公与 JavaScript 完美联动
开发语言·前端·javascript·vscode·ecmascript·wps
GIS开发特训营1 小时前
Vue零基础教程|从前端框架到GIS开发系列课程(七)响应式系统介绍
前端·vue.js·前端框架·gis开发·webgis·三维gis
Cachel wood2 小时前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
学代码的小前端2 小时前
0基础学前端-----CSS DAY9
前端·css
joan_852 小时前
layui表格templet图片渲染--模板字符串和字符串拼接
前端·javascript·layui