# @cypress/parse-domain 中文文档

规范地址：https://npmcn.com/package/%40cypress/parse-domain/

版本：2\.4\.0
npm 元数据更新时间：2022-04-05T02:27:26.130Z
中文译文更新时间：2026-11-11T07:26:15.286Z
软件包许可：Unlicense

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40cypress/parse-domain
原文对照：https://npmcn.com/package/%40cypress/parse-domain/?lang=original
项目主页：https://github.com/cypress-io/parse-domain#readme
源码仓库：https://github.com/cypress-io/parse-domain

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：135 kB，22 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：3 个
- 首次发布：2020-03-23T18:48:22.737Z
- 最新版本发布：2020-03-23T19:51:12.781Z
- 近 30 天下载量：5879（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 0 个）

## 中文简介

将 url 分割为子域、域和有效顶级域

## 安装

```sh
npm install @cypress/parse-domain
```

也可以使用：`pnpm add @cypress/parse-domain`、`yarn add @cypress/parse-domain`、`bun add @cypress/parse-domain`

## README

# 解析域

**将一个 URL 分成子域,域和顶级域. 提供类型脚本打字.**

[![](https://img.shields.io/npm/v/parse-domain.svg)](https://www.npmjs.com/package/parse-domain) [![](https://img.shields.io/npm/dm/parse-domain.svg)](https://www.npmjs.com/package/parse-domain) [![Dependency Status](https://david-dm.org/peerigon/parse-domain.svg)](https://david-dm.org/peerigon/parse-domain) [![Build Status](https://travis-ci.com/peerigon/parse-domain.svg?branch=master)](https://travis-ci.com/peerigon/parse-domain) [![Coverage Status](https://coveralls.io/repos/github/peerigon/parse-domain/badge.svg?branch=master)](https://coveralls.io/github/peerigon/parse-domain?branch=master) [![Known Vulnerabilities](https://snyk.io/test/github/peerigon/parse-domain/badge.svg)](https://snyk.io/test/github/peerigon/parse-domain)

由于不同国家和组织对域的处理不同,将一个URL分割为子域,域和顶级域部分并不是简单的正则解说. **解析域** 使用a [大型已知顶级域列表](https://publicsuffix.org/list/public_suffix_list.dat) 从publicsaftix.org可以识别域名的不同部分.

此模块使用 [三进制](https://en.wikipedia.org/wiki/Trie) 引擎盖下的数据结构,以确保最小可能的库大小和最快的查询. 图书馆大约为30KB精密和被取出。 由于publicsaftix.org经常更新,数据结构建立在 `npm install` 作为 `postinstall` 钩. 如果在这一步骤中出现出错,图书馆会回到一个在出版时已经建成的预建列表.

  

## 安装

```sh
npm install parse-domain
```

  

## 使用量

```javascript

// import the module
const parseDomain = require("parse-domain");

// long subdomains can be handled
expect(parseDomain("some.subdomain.example.co.uk")).to.eql({
    subdomain: "some.subdomain",
    domain: "example",
    tld: "co.uk"
});

// protocols, usernames, passwords, ports, paths, queries and hashes are disregarded
expect(parseDomain("https://user:password@example.co.uk:8080/some/path?and&query#hash")).to.eql({
    subdomain: "",
    domain: "example",
    tld: "co.uk"
});

// unknown top-level domains are ignored
expect(parseDomain("unknown.tld.kk")).to.equal(null);

// invalid urls are also ignored
expect(parseDomain("invalid url")).to.equal(null);
expect(parseDomain({})).to.equal(null);
```

### 引入自定义图案

```javascript
// custom top-level domains can optionally be specified
expect(parseDomain("mymachine.local",{ customTlds: ["local"] })).to.eql({
    subdomain: "",
    domain: "mymachine",
    tld: "local"
});

// custom regexps can optionally be specified (instead of customTlds)
expect(parseDomain("localhost",{ customTlds:/localhost|\.local/ })).to.eql({
    subdomain: "",
    domain: "",
    tld: "localhost"
});
```

有时使用帮助函数应用自定义Tlds 参数会有帮助

```javascript
function parseLocalDomains(url) {
    return parseDomain(url, {
        customTlds: /localhost|\.local/
    });
}

expect(parseLocalDomains("localhost")).to.eql({
    subdomain: "",
    domain: "",
    tld: "localhost"
});
expect(parseLocalDomains("mymachine.local")).to.eql({
    subdomain: "",
    domain: "mymachine",
    tld: "local"
});
```

  

## API 密码

### `parseDomain(url: string, options: ParseOptions): ParsedDomain|null`

回返 `null` 若为 `url` 拥有未知的图案,或者如果它不是一个有效的url.

#### `ParseOptions`

```javascript
{
    // A list of custom tlds that are first matched against the url.
    // Useful if you also need to split internal URLs like localhost.
    customTlds: RegExp|Array<string>,
    
    // There are lot of private domains that act like top-level domains,
    // like blogspot.com, googleapis.com or s3.amazonaws.com.
    // By default, these domains would be split into:
    // { subdomain: ..., domain: "blogspot", tld: "com" }
    // When this flag is set to true, the domain will be split into
    // { subdomain: ..., domain: ..., tld: "blogspot.com" }
    // See also https://github.com/peerigon/parse-domain/issues/4
    privateTlds: boolean - default: false
}
```

#### `ParsedDomain`

```javascript
{
    tld: string,
    domain: string,
    subdomain: string
}
```

  

## 许可证

取消许可证

## 发起人

[![](https://assets.peerigon.com/peerigon/logo/peerigon-logo-flat-spinat.png)](https://peerigon.com/)

## 常见问题

### @cypress/parse-domain 是什么？

将 url 分割为子域、域和有效顶级域

### 如何安装 @cypress/parse-domain？

在项目目录运行 npm install @cypress/parse-domain，或使用 pnpm add / yarn add / bun add。

### @cypress/parse-domain 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @cypress/parse-domain 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @cypress/parse-domain 可以商用吗？

@cypress/parse-domain 使用 Unlicense 许可。作者将代码贡献到公共领域，可不受限制地使用。以上为概括，不构成法律意见，请以许可原文为准。

### @cypress/parse-domain 的下载量有多少？

根据 npm 官方下载统计，@cypress/parse-domain 在 2026/10/11 – 2026/11/09 这 30 天内被下载 5,879 次，日均约 196 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @cypress/parse-domain 还在维护吗？

最新版本 2\.4\.0 发布于 2020/03/24（6 年前）；至今共发布 3 个版本，其中过去 12 个月发布了 0 个；首次发布于 2020/03/24。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

