文档菜单
文档首页
/
MongoDB Shell
/

创建和分享代码片段

本页内容

  • 创建代码片段包
  • 发布代码片段
  • 安装新的代码片段包
  • 向MongoDB社区贡献代码片段包

警告

实验性功能

此功能为实验性。MongoDB不提供代码片段的支持。此功能可能随时更改或删除,恕不另行通知。

预期不会出现错误,但如果您遇到一个,请在此项目的GitHub 仓库中提交一个问题。

您可以使用编写脚本来操作数据或在 mongosh 中执行管理任务。将脚本打包为代码片段提供了一种在您的组织或MongoDB用户社区中轻松共享脚本的方法。

本页讨论了

  • 准备代码片段包。

  • 发布代码片段包到注册表。

有关示例脚本和片段包中的元数据文件,请参阅GitHub上的社区片段注册库

提示

如果您计划将您的片段提交到社区注册库,请务必查看向MongoDB社区贡献片段包。

本节中的步骤专注于打包脚本。有关编写脚本的更多详细信息,请参阅编写脚本。

1

如果您计划向社区仓库贡献代码,请分叉项目仓库。

如果您想创建一个私有仓库,不需要从社区仓库分叉,但在执行以下步骤时,应手动重新创建类似的目录结构。

2

在您从仓库分叉的 snippets 目录下创建一个用于代码片段包的目录。此目录将包含您的脚本代码和多个元数据文件。

此示例展示了两个代码片段包的目录,分别是 decrypt-cardsupdate-auth。出于清晰起见,省略了社区代码片段目录的详细内容。

mongo-snippets
|
├── scripts
│   ├── make-index.js
│   └── show-index.js
└── snippets
├── analyze-schema
├── decrypt-cards
│   ├── LICENSE-Community.txt
│   ├── README.md
│   ├── error-matchers.js
│   ├── index.js
│   └── package.json
├── mock-collection
├── mongocompat
├── resumetoken
├── spawn-mongod
└── update-auth
├── LICENSE
├── README.md
├── index.js
└── package.json
3

创建一个 README.md。此 README.md 文件描述了如何使用您的代码。当用户输入 snippet help 以获取您的代码片段的帮助时,会显示此文件。

4

创建一个LICENSE文件。稍后您需要输入一个许可证标识符字符串,因此请尝试从SPDX许可证列表

5

创建一个index.js文件。

  • 此文件包含您的代码入口,该代码在mongosh控制台中暴露。

  • 脚本是用JavaScript编写的,并定义了您的新函数。

  • 脚本可以是一个文件或多个文件。

  • 脚本可以调用其他文件和本地或远程npm模块。要require()一个远程npm模块,请使用以下结构

    const localRequire = require('module').createRequire(__filename);)

    例如,请参阅 index.js 中的 resumetoken 段落。

  • index.jspackage.json. 中被引用。

  • 在 MongoDB 代码库中有 示例代码。

提示

如果您已有现有脚本,请将其重命名为 index.js 或创建一个 index.js 文件来加载它。有关加载其他脚本的 index.js 文件示例,请参阅这个示例社区仓库

package.json 包含包注册表用于管理代码片段的元数据。

一个最小的 package.json 文件看起来像这样

{
"name": "@mongosh/snippet-resumetoken",
"snippetName": "resumetoken",
"version": "1.0.2",
"description": "Resume token decoder script",
"main": "index.js",
"license": "Apache-2.0",
"publishConfig": {
"access": "public"
}
}

参数包括

字段
描述
"name"
包含代码片段的 npm 包。
"snippetName"
代码片段名称。这是用于 install 等命令的名称。
"version"
包版本。当您更新代码片段时,应增加此版本。
"description"
关于您的代码片段所做事情的简要说明。注意,如果描述超过50或60个字符,可能会造成某些代码片段命令的显示问题。
"main"
这是您的代码的起点,index.js。注意,其他文件中的函数也可以进行作用域限定,以便在mongosh shell中使用。
"license"
您代码用户的许可证。如果您想向共享注册表贡献,许可证应来自SPDX许可证列表。另请参阅MongoDB 贡献者协议。
"publishConfig"
此值用于控制对您代码片段包的访问。public 是典型值,但 npm 也提供了其他选项

使用此代码创建一个骨架 package.json 文件。编辑文件,并将每个 UPDATE 替换为您代码片段包的值。

{
"name": "@UPDATE/UPDATE",
"snippetName": "UPDATE",
"version": "UPDATE",
"description": "UPDATE",
"main": "UPDATE",
"license": "UPDATE",
"publishConfig": {
"access": "UPDATE"
}
}

在MongoDB GitHub 仓库中有几个package.json文件的例子。

提示

MongoDB使用npm作为包注册中心。

npm依赖package.json文件来管理包。有关package.json的更多信息,请参阅npm包文档

要共享您的代码片段,您必须将代码片段包发布到注册中心。该包将包含以下内容:

文件准备完成后,按照以下步骤创建和发布您的代码片段包。

1

注册表索引文件与包含您代码片段的 index.js 文件不同。注册表索引文件,index.bson.br,包含您注册表中代码片段包的元数据。

注册表索引文件在上传使用之前必须进行压缩。在脚本目录中的make-index.js 工具遍历您的代码片段源目录,收集创建注册表索引文件所需的信息。创建注册表索引文件后,make-index.js 脚本还会对其进行压缩。

从“mongo-snippets”目录运行make-index.js脚本来创建索引。

node ./scripts/make-index.js

该脚本的输出是brotli压缩注册表索引文件,index.bson.br

您可以使用show-index.js查看压缩的注册表索引文件。

使用make-index.js是创建注册表索引的首选方法,但您也可以手动创建注册表索引

2

将你的代码片段和注册表索引文件提交到你的GitHub仓库。

3

将你的更改发布到npm注册表。

npm publish --access public

按照以下步骤安装你的新代码片段包

1

在本地 mongosh. 中刷新代码片段元数据。

snippet refresh
2

安装代码片段。

snippet install YOUR_NEW_SNIPPET

如果您编写了一个可能对其他 MongoDB 用户有用的代码 片段,我们邀请您将其贡献给在 GitHub 上托管的 社区仓库

要将代码片段提交到共享的 MongoDB 仓库

1

阅读并完成MongoDB 贡献者协议。

2

从 GitHub 分支并克隆片段项目仓库

3

snippets/下为新代码创建一个新目录。给它一个描述性的名称。

4

创建您的代码片段包。确保它包含以下文件

  • package.json

  • index.js

  • README.md

  • LICENSE

您不需要创建注册表索引文件。如果您的代码片段包被接受,MongoDB 将更新注册表索引文件。

5

将您的更改提交到您的GitHub仓库。

6

代码片段项目仓库上发起一个拉取请求。

MongoDB将对您的拉取请求进行审查。如果它被接受,我们将

  • 将您的代码合并到我们的GitHub仓库中。

  • 将其发布到npm注册表。

  • 将其添加到代码片段索引中。

返回

在控制台使用