Deno를 사용하여 첫 번째 모듈 만들기

이 문서에서는 Deno의 첫 번째 모듈을 사용하는 방법에 대해 살펴보고자 합니다.우리는 지금까지 Deno 커뮤니티에 나타난 일반적인 구조와 모델에 중점을 둘 것이다.

No time to read articles? Head right over the repository.


Deno는 JavaScript 및 TypeScript가 안전하게 실행될 때입니다.그것은 현대 프로그래머들에게 효율적이고 안전한 스크립트 환경을 제공하기 위한 것이다.V8, Rust 및 TypeScript 위에 구축됩니다.Deno에 대해 알고 싶으면 Ryan Dahl과 Kitson Kelly를 추천하거나 official website을 보십시오.
본문 이후에 우리가 기대하는 결과는 다음과 같다.
  • Setup the development environment

  • Getting started with the file structure
  • mod.ts
  • deps.ts
  • mod_test.ts, test.ts and test_deps.ts
  • Tooling
  • Continous integration
  • Publishing
  • Conclusion
  • 개발 환경 설정


    먼저 Deno를 설치합니다.https://deno.land에서 설치 지침을 찾을 수 있습니다.
    터미널에서 다음 명령을 실행하여 설치를 확인합니다.
    deno -v
    
    설치 후 VSCode에 justjavac.vscode-deno 확장을 설치하는 것이 좋습니다.데노의 import 문장과 Node의 import 문장이 약간 다르기 때문에 플러그인이 필요할 수 있습니다.js.

    vscodededeno 확장은 특수 디렉터리에 캐시 입력을 통해 이러한 종류의 원격 가져오기를 복구합니다.

    파일 구조 시작


    빠른 시작을 위해 저장소를 준비했습니다.하지만 걱정하지 마세요. 서류와 디렉터리를 자세히 검사하겠습니다.
    git clone https://github.com/BrunnerLivio/deno-lib-starter.git hello-deno
    cd hello-deno
    
    근육 메모리를 시작하고 npm install 또는 yarn을 입력하기 전에 폴더의 내용을 확인하십시오.
    ├── deps.ts
    ├── .github
    │   └── workflows
    │       └── deno.yml
    ├── .gitignore
    ├── mod_test.ts
    ├── mod.ts
    ├── README.md
    ├── test_deps.ts
    ├── test.ts
    └── tsconfig.json
    
    

    모던파 청년송전 시스템

    mod.ts 파일은 일반적으로 모듈의 입구점입니다.노드js 등효치는 index.js이다.여기서 우리는 우리의 공공 API의 모든 내용을 공개했다.프로젝트의 크기에 따라 mod.tsimport-문장만 사용하면 실제 기능을 정의하지 않고 export 파일을 깔끔하게 유지할 수 있습니다.
    이 초보자 모듈에서 나는 그것을 분리하지 않기로 결정했다. 왜냐하면 나의 관점에서 볼 때, 이것은 필요없기 때문이다.
    // mod.ts
    import { bold } from "./deps.ts";
    
    /** Returns `Hello World` in bold */
    export function getHelloWorld(): string {
      return bold("Hello World");
    }
    
    

    deps。송전 시스템


    Wait -- where is my package.json?


    걱정하지 마십시오. Deno를 사용할 때 우리는 package.json을 필요로 하지 않습니다.대부분의 Deno 모듈은 deps.ts 파일을 사용하여 의존도를 집중합니다.
    우리가 어떻게 이 서류를 만들었는지 봅시다.
    // deps.ts
    // Add your dependencies in here
    export { bold } from "https://deno.land/[email protected]/fmt/colors.ts";
    
    
    노드는 두 가지 주요 차이가 있다.js:
  • 가져오기 문장은 URL
  • 을 사용할 수 있습니다.
  • 가져온 문장의 파일은
  • 으로 끝내야 합니다
    우리는 Deno standard library에서 모듈을 가져오고 bold 함수를 내부적으로 사용하기 위해 내보내고 있습니다.deno.land에서 가져올 때 우리는
    "어쨌든 최신 최고만 주시면..."
    https://deno.land/std/<PATH_TO_MODULE>.ts
    
    아니면 "번지점프를 좋아하지 않습니다. 구체적인 버전을 제시해 주세요."
    https://deno.land/std@{VERSION}/<PATH_TO_MODULE>.ts
    
    일반적으로 deps.ts 파일을 사용하여 외부 모듈을 항상 가져와야 합니다.그것은 모든 의존 항목을 개술하기 쉬우며, 모든 파일을 볼 필요가 없다.

    mod_테스트.ts, 테스트.ts 및 test_deps송전 시스템


    Deno에는 기존 테스트 프레임워크가 포함되어 있습니다.그것은 매우 간단하지만, 매우 유용하다. 지금까지 내가 필요로 하는 모든 것을.테스트 함수를 가져오기 위해 test_deps.ts 파일을 사용했습니다.
    // test_deps.ts
    // Add your test dependencies in here
    export { test, runTests } from "https://deno.land/[email protected]/testing/mod.ts";
    export { assertEquals } from "https://deno.land/[email protected]/testing/asserts.ts";
    
    그럼 우리 mod.ts을 테스트해 봅시다.노드와 유사하다.js, 그중 대부분의 프로젝트는 <NAME>.spec.ts 파일을 사용하여 단원 테스트를 하고 우리는 <NAME>_test.ts을 사용합니다.getHelloWorld() 파일의 mod.ts 함수가 Hello World이라는 파일에서 굵은 mod_test.ts으로 되돌아갔는지 확인해 보겠습니다.
    // mod_test.ts
    import { test, assertEquals, runTests } from "./test_deps.ts";
    import { getHelloWorld } from "./mod.ts";
    
    test(function test_get_hello_world() {
      assertEquals(getHelloWorld(), "\x1b[1mHello World\x1b[22m");
    });
    
    runTests();
    
    만약 우리가 셸에서 deno ./mod_test.ts을 실행한다면, 우리는 테스트가 통과된 것을 보아야 한다.
    running 1 tests
    OK     test_get_hello_world (0.00ms)
    
    test result: OK 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out (2.00ms)
    
    그러나 통상적으로 저장소에 테스트 파일이 하나도 없습니다. (희망은!!!)test.ts 파일을 저장소에 두는 것이 최선의 실천으로 여겨지는 이유입니다. 이 파일은 모든 테스트를 가져오고 실행하기만 하면 됩니다.이제 runTests() 함수를 test.ts 파일로 이동합니다.
    // test.ts
    import { runTests } from "./test_deps.ts";
    
    import "./mod_test.ts";
    
    runTests();
    
    
    deno test.ts에 대해 우리는 이전과 같은 결과를 얻어야 한다.이것이 바로 우리의 문서 구조다.어떻게 사물을 구성하거나 명명하는지 막막하지 않도록 Deno's official style guide을 보십시오!

    도구


    내가 데노를 좋아하는 곳은 네가 얻은 기성품이다.도구가 관련되었을 때, 그것은 결코 멈추지 않았다.Deno는 CLI에서 Prettier 형식으로 직접 제공됩니다.deno fmt **/*.ts만 실행하면 코드를 포맷합니다.현재 어떤 격식 규칙이 유행하는지 골치 아프지 않다.더 이상 최신과 가장 위대한 포맷 프로그램을 찾지 않으며, 그것은 이미 지역 사회에 가장 많이 채택되었다.모든 게 거기 있어...거의.
    linting에 관련되었을 때, 이렇게 편리한 해결 방안은 하나도 없었다.데노도 이 점을 지지할 계획이다.이 Github issue을 보고 최신 정보를 확인하십시오!

    지속적인 통합


    도구에 Deno가 설치되어 있으므로 CI 구성이 간단합니다.본문에서 우리는 Github Actions을 사용할 것이다.그 밖에 우리의 생활을 더욱 쉽게 하기 위해 우리는 denolib/setup-deno 조작을 사용하여 Deno를 설치합니다..github/workflows/deno.yml 파일에서 다음 구성을 찾을 수 있습니다.
    on: [push, pull_request]
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        strategy:
          matrix:
            deno: [0.32.0, 0.31.0, 0.30.0]
        name: Test with Deno ${{ matrix.deno }} 
    
        steps:
          - uses: actions/checkout@master
    
          - name: Setup Deno
            uses: denolib/setup-deno@master
            with:
              deno-version: ${{ matrix.deno }}
    
          - name: Setup Node
            uses: actions/setup-node@master
            with:
              node-version: 12
    
          - name: Print deno version
            run: deno --version
    
          - name: Check format
            run: deno fmt --check **/*.ts
    
          - name: Run tests
            run: deno test.ts
    
    따라서 기본적으로 우리는 일련의 최신 Deno 버전(0.30.0에서 0.32.0)을 사용하여 형식을 검사하고 테스트를 실행하고 있다.아주 직접적이지 않습니까?

    발표하다


    Deno에서 모듈을 회사의 모든 레지스트리에 게시하는 일은 없습니다.앞서 설명한 바와 같이 URL 가져오기 모듈을 간단히 사용할 수 있습니다.따라서 모든 사이트(GitHub 포함)는 우리의 등록 센터입니다!
    모듈을 더욱 볼 수 있도록 deno.land/x/에 웹 인터페이스가 하나 더 있습니다. 이것은 제3자 Deno 라이브러리의 소재지입니다.라이브러리를 제출하려면 사이트 저장소로 이동하여 database.json 파일을 편집하십시오.
    .
    그런 다음 복사본을 추가하고 다음 JSON 객체를 파일에 붙여넣습니다.모듈 이름으로 대시 -을 사용하지 말고 알파벳순으로 붙여넣으십시오.공백 대신 밑줄 _을 사용합니다.
    "my_library_name": {
      "type": "github",
      "owner": "<MY_GITHUB_USERNAME>",
      "repo": "<MY_REPOSITORY_NAME",
      "desc": "<REPOSITORY_DESCRIPTION>"
    },
    
    페이지 밑으로 이동해서 의미 있는 제출 메시지를 추가하고 녹색 Propose file change 단추를 누르십시오.

    이제 Pull 요청을 만들고 관리자 중 한 명이 통합을 승인하기를 기다리기만 하면 됩니다.

    코드는 GitHub에 보관됩니다. deno에 코드 업데이트를 다시 제출할 필요가 없습니다.토지.따라서 Deno는 연속적으로 제공됩니다.

    결론


    만약 내가 가장 좋아하는 데노에 관한 일을 하나만 선택한다면, 그것은 도구이다.Deno는 TypeScript 컴파일러를 사용하기 때문에 코드를 전송할 필요가 없습니다.포맷과 빠른 linter가 통합되어 있기 때문에 다운로드와 설정에 신경 쓸 필요가 없습니다.
    나는 데노에게 아름다운 미래가 있다고 생각한다.여전히 많은 것이 부족하다. 나는 생산에서 그것을 사용하지 않을 것이다. 그러나 내가 본 바와 같이, 지금까지 데노는 이미 많은 일을 할 권리를 가지고 있다.

    좋은 웹페이지 즐겨찾기