创建和分享代码片段
您可以使用编写脚本来操作数据或在 mongosh
中执行管理任务。将脚本打包为代码片段提供了一种在您的组织或MongoDB用户社区中轻松共享脚本的方法。
本页讨论了
有关示例脚本和片段包中的元数据文件,请参阅GitHub上的社区片段注册库。
提示
如果您计划将您的片段提交到社区注册库,请务必查看向MongoDB社区贡献片段包。
创建片段包
本节中的步骤专注于打包脚本。有关编写脚本的更多详细信息,请参阅编写脚本。
准备文件
从社区仓库分叉。
如果您计划向社区仓库贡献代码,请分叉项目仓库。
如果您想创建一个私有仓库,不需要从社区仓库分叉,但在执行以下步骤时,应手动重新创建类似的目录结构。
创建一个包目录。
在您从仓库分叉的 snippets
目录下创建一个用于代码片段包的目录。此目录将包含您的脚本代码和多个元数据文件。
此示例展示了两个代码片段包的目录,分别是 decrypt-cards
和 update-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
创建LICENSE
文件。
创建一个LICENSE
文件。稍后您需要输入一个许可证标识符字符串,因此请尝试从SPDX许可证列表
创建index.js
文件。
创建一个index.js
文件。
此文件包含您的代码入口,该代码在
mongosh
控制台中暴露。脚本是用JavaScript编写的,并定义了您的新函数。
脚本可以是一个文件或多个文件。
脚本可以调用其他文件和本地或远程npm模块。要
require()
一个远程npm模块,请使用以下结构const localRequire = require('module').createRequire(__filename);) 例如,请参阅 index.js 中的
resumetoken
段落。index.js
在 package.json. 中被引用。在 MongoDB 代码库中有 示例代码。
准备 package.json
文件
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包文档。
发布代码片段
要共享您的代码片段,您必须将代码片段包发布到注册中心。该包将包含以下内容:
您的代码
README.md
LICENSE
文件
文件准备完成后,按照以下步骤创建和发布您的代码片段包。
创建注册表索引文件。
注册表索引文件与包含您代码片段的 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
是创建注册表索引的首选方法,但您也可以手动创建注册表索引。
安装新的代码片段包
按照以下步骤安装你的新代码片段包
刷新元数据。
在本地 mongosh
. 中刷新代码片段元数据。
snippet refresh
向 MongoDB 社区贡献代码片段包
如果您编写了一个可能对其他 MongoDB 用户有用的代码 片段,我们邀请您将其贡献给在 GitHub 上托管的 社区仓库。
要将代码片段提交到共享的 MongoDB 仓库
完成贡献者协议。
阅读并完成MongoDB 贡献者协议。
克隆仓库。
从 GitHub 分支并克隆片段项目仓库。
创建您的包目录。
在snippets/下为新代码创建一个新目录。给它一个描述性的名称。
提交您的代码片段。
在代码片段项目仓库上发起一个拉取请求。
MongoDB将对您的拉取请求进行审查。如果它被接受,我们将
将您的代码合并到我们的GitHub仓库中。
将其发布到npm注册表。
将其添加到代码片段索引中。