디노를 개발할 때 효율을 높이는 지령을 만들었어요.

예전에 이쪽 기사가 공개됐어요.
https://zenn.dev/kawarimidoll/articles/0ff5d28fa584d6
Neovim에서 터미널을 열고 편집 중인 파일에 따라 deno run 또는 deno test 명령을 실행합니다.
개발을 위해 --allow-all--unstable가 자동으로 추가되어 실행 시 필요한 옵션을 고려할 필요가 없습니다.그리고 --watch도 하고 있기 때문에 수정반응 코드를 다시 시작합니다.
나 개인적으로는 아주 보배야.
이번에는 이 지령이 디노 스크립트로 다시 만들어졌다고 소개합니다.

dex

A dexterous deno executor 약칭dex.
https://github.com/kawarimidoll/deno-dex
https://ejje.weblio.jp/content/dexterous

기능


  • 단순 자동화deno rundeno test.
  • 교부된 파일 이름에 따라 자동 테스트 파일인지 아닌지를 판단하여 실행deno run 또는deno test.
  • 자동--allow-all --unstable --no-check --watch 설치 실행
  • 편리한 옵션이 있습니다.
  • --clear 옵션을 추가하여 다시 로드할 때마다 콘솔을 지울 수 있습니다.
  • --watch 옵션에 파일 경로를 보내거나 실행 대상 파일 이외의 변경 사항을 감시할 수 있습니다.
  • 기타 옵션은 투명하게 deno run 또는 deno test에 전달됩니다.
  • 설정 파일을 자동으로 읽습니다.
  • 현재 디렉터리import_map.json 또는 deno.jsonc 등 규정된 이름이 있는 파일은 실행 옵션에 자동으로 전달됩니다.
  • --import-map--config 옵션 매개 변수로 지정된 파일(자동 지정된 파일 포함)은 자동으로 변경 모니터링을 수행합니다.
  • 가져오기

    deno install에서 가져옵니다.
    deno install --allow-read --allow-write --allow-run --reload --force --name dex https://pax.deno.dev/kawarimidoll/deno-dex/main.ts
    
    각 권한은 다음과 같은 이유로 요구된다.
  • read: 파일 변경 및 현재 디렉터리 감시
  • write: 중간 실행 파일의 생성
  • run: deno 명령 실행 및 중단
  • 최신 변경 사항을 보려면 설치 시 --reload --force를 설치하는 것이 좋습니다.

    기본용법

    deno run에서 실행하여 파일에 매개 변수로 전달합니다.
    dex hello.ts
    # -> deno run --allow-all --unstable --no-check --watch hello.ts
    
    테스트 파일에 제출하면 자동으로 판정하고 집행deno test.
    dex hello_test.ts
    # -> deno test --allow-all --unstable --no-check --watch hello_test.ts
    

    옵션


    이 별명deno run/test --allow-all --unstable --no-check --watch만 사용할 수 있지만 --clear--watch 옵션을 사용할 수 있습니다.
    또 다른 옵션--version--help이 투명하게 전달deno run/test되기 때문에 --compat--quiet 등도 사용할 수 있다.
    이때 파라미터의 처리에 대해 이쪽 보도에서 설명하겠습니다.
    https://zenn.dev/kawarimidoll/articles/182d2ff9444375

    콘솔 자동 지우기

    --clear 옵션을 추가하여 다시 로드할 때마다 화면을 지울 수 있습니다.
    이전에 소개됐던 네오비엠용 지령도 이 글에서 계발됐다.
    https://zenn.dev/yutaro_elk/articles/ce343b13506364
    이 글은 편집 대상의 파일에 console.clear()를 놓는 방법을 소개했다.dex 아래 파일$DENO_DIR을 생성하여 실행합니다.
    사용자는 명확하게 쓸 필요가 없다console.clear().
    $DENO_DIR/dex/script.ts
    console.clear();
    import("path/to/file");
    
    처음에는 이base 64화deno run를 실행에 맡길 수 있을 것으로 생각했으나 경로 해결이 순조롭지 않아 $DENO_DIR 이하로 생성하기로 했다.
    https://zenn.dev/kawarimidoll/articles/3f06083cb03b25

    비실행 개체의 파일 모니터링

    deno run --watch 실행 대상의 파일과 이 파일import의 파일만 감시 대상으로 업데이트하고 dex--watch 옵션에 추가된 파일은 모두 감시 대상이 된다.
    예를 들어 다음과 같은 표시sample.txt의 스크립트가 있을 때
    show_text.ts
    console.log(await Deno.readTextFile("./sample.txt"))
    
    sample.txt
    This is sample text!
    
    --watch 옵션에 지정된 경우sample.txt 파일이 업데이트될 때 자동으로 다시 로드됩니다.
    dex --watch=./sample.txt show_text.ts
    
    ,로 분리하여 교부해도 여러 파일을 지정할 수 있다.

    프로파일 자동 로드 및 모니터링


    Deno를 실행할 때 지정할 수 있는 설정 파일은 import mapsconfiguration file입니다.dex 실행 시 현재 디렉토리에 import_map.json가 있으면 --import-map 옵션에 자동으로 전달됩니다.
    마찬가지로 현재 디렉토리에 deno.jsoncdeno.jsontsconfig.json 중 하나가 있는 경우 자동으로 --config 옵션에 전달됩니다(전번일수록 우선).
    또한 --import-map--config 옵션 매개 변수로 지정된 파일(자동 지정된 파일 포함)은 자동으로 변경 모니터링을 수행합니다.
    실행 중 deno.jsonc로 변경되면 자동으로 재부팅되는 셈이다.

    주의점


    단순 실행이 개념이기 때문에 모든 권한을 허가--allow-all, 불안정 동작 허가--unstable, 검사하지 않는 유형--no-check의 전혀 보호되지 않는 설정으로 설정한다.
    개발 환경에서 확인용으로 사용하면 문제없지만 외부 코드를 사용할 때는 각별히 주의하세요.
    또 코드Deno.exit()에서 호출되면 즉시 종료되기 때문에 재부팅이 불가능하다.
    이것은 일반적인deno run --watch 행위와 같다.

    끝말

    dex를 사용하면 권한에 따라 모든 허가·설정 파일 자동 감시 기능을 상세한 설정을 고려하지 않아도 먼저 실행할 수 있다.
    이전에 만들어진 명령은 Neovim 전용이었지만 편집기든 자동 실행이든 모두 이 혜택을 받았다.
    동작을 확인하면서 개발하기 쉬울 것 같으니 꼭 사용하세요.
    https://github.com/kawarimidoll/deno-dex
    소감, 오류 보고, 스타, 무엇이든 환영합니다.잘 부탁드립니다.

    Vim/Neovim 제휴


    편집기와 무관한 내용을 썼지만 필자는 네오비엠 사용자이기 때문에 이번dex은 네오비엠 내에서 사용할 수 있다.
    다음 정의를 설정 파일에 추가하여 사용하십시오.Vism도 작동할 것입니다.
    .vimrc or init.vim
    command! -nargs=* -bang Dex silent only! | botright 12 split |
        \ execute 'terminal' (has('nvim') ? '' : '++curwin') 'dex'
        \   (<bang>0 ? '--clear ' : '') <q-args> ' ' expand('%:p') |
        \ stopinsert | execute 'normal! G' | set bufhidden=wipe |
        \ execute 'autocmd BufEnter <buffer> if winnr("$") == 1 | quit! | endif' |
        \ wincmd k
    
    
  • :Dex에서 현재 파일을 실행합니다dex.
  • :Dex --quiet 이런 느낌으로 옵션을 제공할 수 있습니다.
  • :Dex --clear의 단축키로 사용할 수 있다:Dex!.
  • Vim script의 창 처리에 관해서는 이전 기사에서 이미 설명했으니 관심 있는 분들은 보십시오.
    https://zenn.dev/kawarimidoll/articles/0ff5d28fa584d6

    참고 자료

    --watch 옵션의 대상 파일이 자체적으로 업데이트 감시를 진행하고 있습니다.이것은 다음과 같은 문장을 참고했다.

    좋은 웹페이지 즐겨찾기