스니펫 생성 및 공유
경고
실험적 기능
이는 실험적인 기능입니다. MongoDB는 스니펫을 지원하지 않습니다. 이 기능은 사전 통지 없이 변경되거나 제거될 수 있습니다.
버그는 예상되지 않지만, 버그가 발생하면 Github 리포지토리 에서 문제를 제기하세요. 이 프로젝트의 경우.
에서 mongosh
데이터를 조작하거나 관리 작업을수행하는 스크립트를 쓰기 (write) 수 있습니다. 스크립트 를 스니펫으로 패키징하면 조직 내 또는 MongoDB 사용자 커뮤니티 전반에서 스크립트를 쉽게 주식 할 수 있습니다.
이 페이지에서는 다음을 설명합니다.
스니펫 패키지의 스크립트 및 메타데이터 파일 예시는 GitHub에서 커뮤니티 스니펫 레지스트리의 스니펫을 참조하세요.
팁
커뮤니티 레지스트리 에 스니펫을 제출할 계획인 경우 MongoDB Community에 스니펫패키지 기여하기의 정보를 반드시 검토하세요.
스니펫 패키지 생성
이 섹션의 단계에서는 스크립트 패키징에 중점을 둡니다. 스크립트 작성에 대한 자세한 내용은 스크립트 작성을 참조하세요.
파일 준비
커뮤니티 리포지토리를 포크합니다.
커뮤니티 리포지토리 에 기여하려는 경우 스니펫 프로젝트 리포지토리 를 포크합니다.
비공개 리포지토리를 만들려는 경우 커뮤니티 리포지토리 를 포크할 필요는 없지만 다음 단계를 진행하면서 유사한 디렉토리 구조를 수동으로 다시 만들어야 합니다.
패키지 디렉토리를 생성합니다.
포크된 리포지토리의 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
파일 을 만듭니다. 나중에 라이선스 식별자 string 을 입력해야 하므로 SPDX 라이선스 목록에서 라이선스를 선택하는 것이 좋습니다.
을 만듭니다.index.js
index.js
파일을 만듭니다.
이 파일에는
mongosh
콘솔에 노출되는 코드의 진입점이 포함되어 있습니다.스크립트는 JavaScript로 작성되었으며 새 함수를 정의합니다.
스크립트는 단일 파일 또는 여러 파일에 있을 수 있습니다.
스크립트는 다른 파일과 로컬 또는 원격 npm 모듈을 호출할 수 있습니다. 원격 npm 모듈을
require()
하려면 구성을 사용합니다.const localRequire = require('module').createRequire(__filename);) 예시로
resumetoken
스니펫의 index.js를 참조하세요.index.js
package.json에서 참조됩니다.MongoDB 리포지토리에 예제 코드가 있습니다.
팁
기존 스크립트가 있는 경우 이름을 index.js
으로 바꾸거나 index.js
파일을 만들어 로드합니다. index.js
다른 스크립트를 로드하는 파일의 예는 다음을 참조 하세요.커뮤니티 리포지토리에 있습니다.
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" | 스니펫 이름입니다. 이는 |
"version" | 패키지 버전입니다. 이 값은 스니펫을 업데이트할 때 증가해야 합니다. |
"description" | 스니펫의 기능에 대한 간략한 메모입니다. 설명이 50자 또는 60자를 초과하면 일부 스니펫 명령에서 표시 문제가 발생할 수 있습니다. |
"main" | 코드의 시작점인 |
"licens" | 코드 사용자를 위한 라이선스입니다. 공유 레지스트리에 기여하려면 라이선스가 SPDX 라이선스 목록 에 있어야 합니다. . MongoDB 기여자 계약도 참조하세요. |
"publishConfig" | 이 값은 스니펫 패키지에 대한 액세스를 제어하는 데 사용됩니다. |
이 코드를 사용하여 스켈레톤 package.json
파일을 만듭니다. 파일을 편집하고 각 UPDATE
를 바꿔서 스니펫 패키지의 값을 삽입합니다.
{ "name": "@UPDATE/UPDATE", "snippetName": "UPDATE", "version": "UPDATE", "description": "UPDATE", "main": "UPDATE", "license": "UPDATE", "publishConfig": { "access": "UPDATE" } }
리포지토리에는 파일의 몇 가지 예가 package.json
MongoDB Github 있습니다.
팁
MongoDB는 npm을 패키지 레지스트리로 사용합니다.
npm은 package.json
파일을 사용하여 패키지를 관리합니다. npm 패키지 설명서 를 package.json
참조하세요. 에 대한 자세한 내용은 을(를) 참조하세요.
스니펫 게시
스니펫을 공유하려면 스니펫 패키지를 레지스트리에 게시해야 합니다. 패키지에는 다음이 포함됩니다.
코드
README.md
LICENSE
파일
파일이 완성되면 다음 단계에 따라 스니펫 패키지를 만들고 게시합니다.
레지스트리 인덱스 파일을 생성합니다.
레지스트리 인덱스 파일은 스니펫 코드가 포함된 index.js
파일과 동일하지 않습니다. 레지스트리 인덱스 파일 index.bson.br
에는 레지스트리에 있는 스니펫 패키지에 대한 메타데이터가 포함되어 있습니다.
레지스트리 인덱스 파일은 사용하려면 업로드하기 전에 압축해야 합니다. make-index.js 스크립트 디렉토리의 유틸리티는 스니펫 소스 디렉토리를 안내하여 레지스트리 인덱스 파일을 생성하는 데 필요한 정보를 수집합니다. 레지스트리 인덱스 파일을 만든 후 make-index.js
스크립트도 압축합니다.
make-index.js 실행 디렉토리에서 mongo-snippets
인덱스를 생성합니다.
node ./scripts/make-index.js
이 스크립트의 출력 은 레지스트리 인덱스 파일, index.bson.br
.
show-index.js 를 사용할 수 있습니다. 압축된 레지스트리 인덱스 파일을 봅니다.
레지스트리 인덱스를 만드는 데 make-index.js
를 사용하는 것이 선호되는 방법이지만 레지스트리 인덱스를 수동으로 만들 수도 있습니다.
새 스니펫 패키지 설치
다음 단계에 따라 새 스니펫 패키지를 설치합니다.
메타데이터를 새로 고칩니다.
로컬 mongosh
에서 스니펫 메타데이터를 새로 고침합니다.
snippet refresh
MongoDB Community에 스니펫 패키지 기여
다른 MongoDB 사용자에게 유용할 수 있는 코드 스니펫을 작성했다면 Github에 호스팅된 커뮤니티 리포지토리에 기여하도록 초대됩니다.
공유 MongoDB 리포지토리 에 스니펫을 제출 하려면 다음을 수행합니다.
리포지토리를 복제합니다.
GitHub에서 스니펫 프로젝트 리포지토리 포크 및 복제합니다.
패키지 디렉토리를 만듭니다.
스니펫/ 아래에 코드를 저장할 새 디렉토리를 추가합니다. . 설명이 포함된 이름을 지정합니다.
스니펫 코드를 제출합니다.
스니펫 프로젝트 리포지토리에대해 pull 요청을 엽니다.
MongoDB가 pull 요청을 검토합니다. 수락되면 다음이 수행됩니다.
코드를 GitHub 리포지토리에 병합합니다.
npm 레지스트리에 게시합니다.
스니펫 인덱스에 추가합니다.