JavaScript教程:轻松构建和发布NPM软件包

曾经有几次我认为最好在NPM上发布JavaScript库。 它要么是我在不同项目中一直使用的小型图书馆,要么是我认为足以与同事共享的命令行工具。 但是,每当我开始研究将程序包构建和发布到NPM的过程时,我总是会感到不知所措。

经历了最佳实践和支持的麻烦之后,我意识到我的下午项目只是级联到晚上,然后到晚上。 如果我确实取得了进展,我将永远不确定。 我一直在问自己:“我真的这样做对吗?”

[Kubernetes,无服务器框架,Kafka,Redis,.Net Core等:请参阅InfoWorld的2019年度技术奖获奖者 。 | 通过《 InfoWorld日报》时事通讯了解最新的企业技术中的关键新闻和问题。 ]

当一位前同事问我是否曾经使用过@ pika / pack,这是一种旨在完成所有繁重的构建和发布NPM软件包的新工具时,我抓住了这个机会。 过去一周,我通过创建和发布一个简单的CLI工具,使用@ pika / pack进行了测试。

什么是@ pika / pack?

NPM生态系统是巨大的,您可以找到的软件包质量可以满足质量和可用性的全部要求。 如果您不使用现代语言功能,那么看起来好用的软件包可能会让您头疼,反之亦然,如果不输入文字,那么在TypeScript之类的语言中使用NPM软件包可能会很痛苦。 @ pika / pack是一个工具,可使用可插拔管道和简单的配置来帮助程序包开发人员构建和发布针对Web,Node.js,TypeScript,WebAssembly等的优化构建。 您可以阅读项目开发人员的完整介绍,并在此处查看代码示例。

将@ pika / pack进行测试

我编写的用于尝试@ pika / pack的CLI工具是在Docker Hub上简单搜索图像。 与docker search实用程序不同,此工具仅将结果限制为官方图像,并提供指向Docker Hub上各自页面的终端链接。 这是成品的外观:

JavaScript教程:轻松构建和发布NPM软件包_第1张图片 IDG

我使用一些现代JavaScript语法(例如import语句,箭头函数和模板文字)编写了查找工具,并且在开发过程中使用babel-node在本地运行它。 一旦到达所需位置,我就准备合并@ pika / pack,构建和发布。

@ pika / pack安装和设置

合并@ pika / pack的第一步是安装一些依赖项,然后修改package.json以包括额外的配置设置。 我选择安装标准软件包插件,Node.js插件和简单bin插件,以便将该工具部署为可执行的CLI。

npm install --save-dev @pika/pack @pika/plugin-standard-pkg @pika/plugin-build-node @pike/plugin-simple-bin

唯一需要的配置是选择要在管道构建中使用的插件的顺序,如以下package.json中的摘录所示:

  "name": "dlook-cli",
  "version": "0.1.1",
  "description": "A cli tool to search official docker containers",
  ...
  "@pika/pack": {
    "pipeline": [
      [
        "@pika/plugin-standard-pkg"
      ],
      [
        "@pika/plugin-build-node"
      ],
      [
        "@pika/plugin-simple-bin",
        {
          "bin": "dlook"
        }
      ]
    ]
  }

用@ pika / pack构建一个包

如果您全局安装了@ pika / pack,那么pack build就和运行pack build一样简单:

JavaScript教程:轻松构建和发布NPM软件包_第2张图片 IDG

但是,我第一次尝试此操作时遇到了问题。 那是因为我没有遵循未记录的要求,即所有源代码都必须位于src目录中。 我建立了一个平面存储库,因为该项目是如此简单。 您还必须确保您的主脚本命名为index.js,无论package.json中的入口点指定了什么。 这两个期望都没有记录,但是错误消息很清楚,我一闪而过。

在这里,您可以查看新创建的pkg目录中的每个目录,以查看pack命令实际生成的内容。 我只对可执行二进制文件感兴趣,因此我只需要对本地运行命令进行快速测试就可以放心:

JavaScript教程:轻松构建和发布NPM软件包_第3张图片 IDG

较少描述性的错误消息并不是很有帮助。

引用@ pika / plugin-simple-bin信息库使我很快找到答案:为了使用该插件,您必须从index.js文件中公开run功能。 该插件以相对简单的方式包装并执行此功能,因此尽管错误消息不是很具描述性,但修复很简单。 另一轮构建和测试导致了我期望的输出:

JavaScript教程:轻松构建和发布NPM软件包_第4张图片 IDG

使用@ pika / pack发布软件包

对构建感到满意,是时候发布了。 @ pika / pack从np大量借用, np是发布到NPM的好工具,因此您可能熟悉发布的界面:

JavaScript教程:轻松构建和发布NPM软件包_第5张图片 IDG

有用的验证和选项可大大简化该过程。

在检查提交并选择新版本之后,该工具除了更新package.json以包括凹凸版本之外,还测试并发布了您的软件包。

JavaScript教程:轻松构建和发布NPM软件包_第6张图片 IDG

总而言之,尽管由于缺少文档而有些困惑,但我对@ pika / pack的初次体验还是很棒的。 @ pika / pack是一个全新的项目,因此,请期待这些小小的障碍在社区采用,使用并为该项目做出贡献时得以消除。

与往常一样,此列中的代码可在GitHub上获得 。 如果您想试用我构建和发布的实用程序,只需运行:

npm install -g dlook-cli
dlook --help

有任何问题或意见吗? 请继续在Twitter上进行对话: @freethejazz

From: https://www.infoworld.com/article/3342617/javascript-tutorial-build-and-publish-npm-packages-in-a-pinch.html

你可能感兴趣的:(javascript,json,运维,ViewUI)