迹忆客 专注技术分享

当前位置:主页 > 学无止境 >

构建、测试和发布 NPM 包

作者:迹忆客 最近更新:2022/09/03 浏览次数:

在本文中,我们将构建、测试和发布一个 npm 包,来检查字符串是否为电子邮件地址。 因此,如果想知道我们将如何做,请系好安全带,然后出发🚗


先决条件

  • 在你的机器上安装 Nodejs(如果没有,你可以点击这里)。
  • 有一个 npm 帐户,如果没有,可以在 npmjs.com 上创建一个。
  • 还有一点 JavaScript 知识。

构建

首先,我们需要一个目录来保存我们的代码,因此创建一个并使用终端打开它,然后通过运行以下命令初始化一个新的 Nodejs 项目:

$ npm init -y

该命令将生成一个带有默认值的 package.json 文件,我们稍后将对其进行编辑。

接下来,在我们的目录中,让我们创建一个新目录并将其命名为 src,然后在 src 中,让我们创建一个包含我们的代码的 index.js 文件。

现在我们的根目录具有以下文件结构:

.
└─src
│ └ index.js
│ package.json

让我们进入 src/index.js 文件并导出一个函数,该函数将字符串作为参数并检查它是否是电子邮件地址。 为此,我们将使用正则表达式(regex)。并测试给定的字符串是否与电子邮件地址的正则表达式模式匹配:

const isEmailAddress = (string) => {
  const regex =
    /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  return regex.test(String(string).toLowerCase());
};

module.exports = isEmailAddress;

如果对正则表达式不熟悉的同学,可以参考正则表达式教程。

非常好! 现在我们已经创建了我们的包,让我们继续下一步。


测试

为了测试我们的包,我们将使用 Jest 作为我们的测试框架。 为此,我们首先使用以下命令将 Jest 作为开发依赖项安装:

$ npm install —-save-dev jest

然后在我们的根目录中创建一个新目录并将其命名为 test,并在其中创建一个 index.test.js 文件,该文件将包含我们的测试。

现在我们根目录的文件结构如下:

.
└─src
│ └ index.js
└─test
│ └ index.test.js
│ package.json

test/index.test.js 中,让我们导入我们从 src/index.js 导出的函数并编写我们的测试:

const isEmail = require("../src");

describe("isEmail", () => {
  it("should return false if the email is not valid", () => {
    expect(isEmail("123")).toBe(false);
    expect(isEmail("email")).toBe(false);
    expect(isEmail("example.com")).toBe(false);
    expect(isEmail("email@example")).toBe(false);
  });

  it("should return true if email is valid", () => {
    expect(isEmail("email@example.com")).toBe(true);
    expect(isEmail("email123@example.com")).toBe(true);
    expect(isEmail("email-12@example.com")).toBe(true);
    expect(isEmail("email+az@example.com")).toBe(true);
  });
});

要运行我们的测试,让我们转到 package.json 文件并编辑测试脚本以使用 jest:

- "test": "echo \\"Error: no test specified\\" && exit 1”
+ "test": "jest"

然后运行以下命令:

$ npm run test

你应该看到我们的测试通过了


发布包

要发布我们的包,我们需要对 package.json 文件进行一些更改,我们将从包名开始,我将其简单命名为 is-email-address,但在命名包之前,我们首先需要 确保自己的包名是唯一的并且不存在于 npm 注册表中,否则当你尝试发布它时会出错。

我还将添加一些描述,并将我们包的入口点设置为 src/index.js,我将添加一些关键字来帮助人们发现我们的包,因为它在 npm 搜索中列出(大家可以从这里了解更多关于 npm 的 package.json 的处理细节)。

现在 package.json 文件看起来像这样:

{
  "name": "is-email-address",
  "version": "1.0.0",
  "description": "check whether a string is an email address",
  "main": "src/index.js",
  "scripts": {
    "test": "jest"
  },
  "files": [
    "src"
  ],
  "keywords": [
    "email",
    "is-email-address",
    "is-email"
  ],
  "author": "Omar Baabouj <baabouj.dev@gmail.com>",
  "license": "ISC",
  "devDependencies": {
    "jest": "^28.0.3"
  }
}

回到终端,让我们首先通过运行命令登录到 npm:

$ npm login

我们将被要求输入用户名、密码和电子邮件。 添加后,我们就成功登录了!

现在到最后一步,让我们运行命令来发布我们的包:

$ npm publish

瞧! 你刚刚发布了一个 npm 包🎉

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

pm2: command not found error 错误解决

发布时间:2022/09/27 浏览次数:339 分类:学无止境

使用 npx 解决错误“pm2: command not found”,例如 npx pm2 启动 app.js 或通过运行 npm install -g pm2 全局安装包,以便能够使用不带 npx 前缀的命令。

解决 Cannot find module 'lodash' 错误

发布时间:2022/09/21 浏览次数:230 分类:学无止境

要解决错误“Cannot find module 'lodash' ”,请确保通过在项目的根目录中打开终端并运行以下命令来安装lodash软件包:npm i lodash。 如果使用Typescript,请通过运行 NPM I -D @Types/lodash安装。

Cannot find module 'date-fns' 错误

发布时间:2022/09/16 浏览次数:154 分类:学无止境

要解决错误“Cannot find module 'date-fns'”,请确保通过在项目的根目录中打开终端并运行以下命令来安装 date-fns 包:npm i date-fns 并重新启动 IDE 和开发服务器。

Cannot find module 'prettier' 错误

发布时间:2022/09/16 浏览次数:558 分类:学无止境

要解决错误“Cannot find module 'prettier'”,请确保通过在项目的根目录中打开终端并运行以下命令来安装 prettier 包:npm install --save-dev prettier。

解决 Cannot find module 'webpack' 错误

发布时间:2022/09/16 浏览次数:154 分类:学无止境

要解决“Cannot find module 'webpack'”错误,需要确保通过运行 npm i -g webpack 命令全局安装 webpack,并通过运行 npm link webpack 命令创建从全局安装的包到 node_modules 的符号链接。

NPM 使用快捷方式安装 package 包

发布时间:2022/08/14 浏览次数:154 分类:学无止境

对于使用 NPM 安装包大家都熟悉,我们希望通过向大家展示包安装的快捷方式来提高大家的工作效率。 NPM 为从命令行执行的重复命令集成了多个时间节省器。

NPM 显示已安装和过期的 package 包

发布时间:2022/08/04 浏览次数:219 分类:学无止境

NPM 是使用 Node.js 时首选的包管理器。 我们不需要强调了解工具的重要性,当然,这也适用于 NPM。 这篇文章将向大家展示使用 NPM 显示本地存储库的已安装包或系统上全局安装的包的提

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便