最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 译|GitHub Package Registry 值得尝试吗

    正文概述 掘金(前端zenblo)   2021-01-12   502

    译|GitHub Package Registry 值得尝试吗

    GitHub Package Registry 是由微软于 2019 年年中开发并推出的。随着完成对 GitHub 和 NPM 的收购,这一功能似乎是微软扩展 GitHub 生态系统的绝佳举措。同时,GitHub 使用以下标语来强调这一事实:

    但是仅凭这一点就值得去尝试吗?我们首先考虑是否真的需要另一个包管理器吗?

    让我们来了解更多内容。

    是否值得尝试

    如果你是 GitHub 的 4000 万用户中的一员,只需点击你的 GitHub profileGitHub Organization 下的一个标签就可以访问 GitHub Package Registry。

    译|GitHub Package Registry 值得尝试吗

    然而,你可能想知道 GitHub 包管理器是否会作为一个核心特性脱颖而出?到目前为止,GitHub 已经巧妙地将它放在其核心产品组合中。此外,GitHub 已经实现了一套具有较高影响力的功能体系让我们尝试使用。

    让我们来看一下它的一些特性,这些特性将它推向了一个新的高度。

    1. 支持 5 种语言和客户端

    与专注于 NodeJS 包的 NPM 不同,GitHub 包注册中心支持一系列包类型和客户端,如下所示:

    译|GitHub Package Registry 值得尝试吗

    在即将到来的版本更新中,我们可以期待它会支持更多的开发工具和客户端。

    由于 GitHub Package Registry 支持多种包格式,从而为托管不同的软件包带来了方便,在有不同技术栈的微服务项目中也能很好地使用。

    2. 集成工作流与 GitHub Actions

    结合 GitHub API、GitHub Actions 和 WebHooks,可以开发实现端到端 DevOps 工作流集成,包括 CI/CD 管道。你还可以使用 GraphQL 和 WebHooks 自定义发布前和发布后的工作流。

    译|GitHub Package Registry 值得尝试吗

    简而言之,通过与 GitHub Actions 本地集成,你可以在一个地方自动化整个包生命周期及操作。

    3. 用户和工具的访问控制

    这允许在一个位置管理代码仓库和包。它还简化了 CI/CD 管道的访问控制。此外,GitHub 认证可以用来访问源代码和私有包。

    你还可以根据需求选择将包托管为公共或私有。

    4. 在一个地方监管项目代码和包

    与其他包管理器类似,Github Package Registry 允许在下载之前查看包内容、下载统计数据和历史版本,以便在下载前有更好地了解。

    即使有了 NPM 包,我还是习惯去 GitHub 看项目的 star 数量、贡献者数量,并查看最近提交的日期记录,现在你可以在一个地方找到这些内容。

    已在其他地方托管包的情况处理

    好消息是你不必这样担心,特别是对于公共软件包。假设你的私有软件包依赖于任何其他公共软件包注册中心,例如 NPM。一旦将根软件包移至 GitHub Package Registry,这些依赖关系仍将完好保持运行。实际上,将 NPM 软件包移至 GitHub Package Registry 后,只需更改注册表 URL 地址和访问控制机制。

    让我们来看一个简单的示例,以便了解如何使用 GitHub Package Registry 发布 NPM 软件包并逐步使用它。

    Step 1:验证 GitHub Package Registry

    首先,你需要有一个 GitHub 访问令牌才能向 GitHub 注册表验证你的身份。你既可以使用现有的令牌,也可以使用 github.com/settings/to… 创建一个令牌。在这里,我将令牌命名为 githubReg

    译|GitHub Package Registry 值得尝试吗

    你需要设置 .npmrc 文件,该文件是有关 NPM 客户端如何与 NPM 注册表本身进行通信的配置。打开终端并运行 code .npmr。它将打开一个空白文件,并用你的 access_token 替换以下对应内容。

    //npm.pkg.github.com/:_authToken=TOKEN
    

    然后初始化一个新的 NPM 项目,打开 VSCode 并运行 npm init 命令。

    Step 2:进行打包发布

    在项目的根目录中创建一个本地 .nmprc 文件,并添加以下内容。在这里,将 OWNER 替换为你的用户名或组织名。

    @OWNER:registry=https://npm.pkg.github.com/
    

    创建 JavaScript 主程序文件并编写一个简单函数。在这里,我在根目录中创建了一个名为 index.js 的文件来测试该软件包。

    module.export = () => {
       console.log("hello new one");
    }
    

    接着,你需要验证软件包的名称,并将项目仓库添加到项目 package.json 文件中,然后将所有更改推送到 git。

    注意: 这里你需要创建自己的项目仓库,并将其细节添加到下面的文件中。

    {
       "name": "@ChameeraD/pkg-git-demo",
       "version": "1.0.0",
       "description": "",
       "main": "index.js",
       "scripts": {
          "test": "echo \"Error: no test specified\" && exit 1"
       },
       "repository": {
          "url": "git://github.com/ChameeraD/pkg-git-demo.git."
       },
       "publishConfig": {
          "registry":"https://npm.pkg.github.com/"
       },   
       "author": "",
       "license": "ISC"
    }
    

    最后,使用 npm publish 发布包。

    Step 3:将包作为依赖项使用

    你可以将包添加到任何项目中。

    1. 在项目根目录创建一个本地 .npmrc 文件,并添加 @OWNER:registry=https://npm.pkg.github.com/,这与我们在创建软件包时的操作类似。
    2. 使用 Yarn 或 NPM 将包添加到项目中。例如使用 Yarn:yarn add @ChameeraD/pkg-git-demo
    3. 最后,可以将包导入到代码中并使用:

    import demoPkg from ‘@ChameeraD/pkg-git-demo’; demoPkg();

    译|GitHub Package Registry 值得尝试吗

    尽管 GitHub 包管理器具有很多功能特性,但它也有局限性。

    GitHub 包管理器局限性

    为了保持内容简短集中,我将只列举那些影响大多数开发人员的内容。

    仅支持特定范围的 NPM 包

    将非作用域的软件包从 npm 迁移到 GitHub package registry 可能会很麻烦,因为 GitHub 仅支持 npm 作用域软件包(例如 npm install @source/my-package)。

    如果你想移动任何没有作用域的现存软件包,则需要添加作用域并修改代码的导入才能正常使用。

    软件包迁移较困难

    由于不同技术(Docker、.NET)之间存在差异,从多个软件包注册中心进行迁移可能很困难。

    如果你已经使用了任何其他包注册表,可能会由于包更新而出现版本问题。例如,如果你在 npm 和 GitHub 注册表中都维护一个包,那么你也需要维护它的版本。因此,最好在知道依赖关系的情况下规划迁移,并使用单个包注册表。

    较差的自定义性

    它的自定义性较差,用户无法使用自定义身份验证机制,不能使用自托管注册表。缺少这些功能将限制开发人员离线和在较差网络条件下工作。

    结论

    将软件包发布到 GitHub Package Registry 是一种全新的体验,它具有将源代码和软件包保存在一个地方的简单性。

    当前重点是支持多种类型的软件包(已经支持多种类型),而且 GitHub Package Registry 逐渐完善对所有软件包类型的支持。此外,如果你已经将 GitHub 作为项目仓库,那么使用 GitHub Package Registry 就更方便。

    感谢你的阅读!



    起源地下载网 » 译|GitHub Package Registry 值得尝试吗

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元