Node.js에서 Deno와 유사한 URL을 가져올 수 있습니까?

3269 단어 denotypescriptnpmnode
종속성의 분산은 Deno 에서 내가 가장 좋아하는 기능 중 하나입니다. Deno가 하는 일은 종속성을 게시하고 관리하는 프로세스를 단순화하는 것입니다. 온라인에 있는 모든 파일은 독립적으로 다른 프로젝트에 포함될 수 있으며 종속성 트리만 가져올 수 있습니다. npm 모듈을 사용하는 반면에 단일 npm 모듈을 사용하는 단일 파일이 필요한 경우 불행히도 다음을 수행해야 합니다. 프로젝트에 모든 npm 종속성을 포함합니다.

노드에 url-imports를 포함하는 방법을 원하고 그것이 어떻게 생겼는지에 대해 몇 가지 생각이 있습니다.
  • 기존 require 또는 import 키워드를 사용하지 않거나 타사 모듈을 사용하거나 별도의 명령을 사용하여 노드를 실행합니다.
  • 파일을 구문 분석하고 잠금/파일을 다운로드하는 url-import install 명령을 사용하여 런타임에 비동기식으로 가져오지 마십시오.
  • 모든 디렉토리 수준에서 package.json , package-lock.json , yarn.json , yarn.lock , npm-shrinkwrap.json 를 스캔하거나 확인해야 하는 URL이 주어지면 npm 패키지를 수용해야 합니다.
  • tsconfig.json , 모든 디렉터리 수준에서 url 구조 내에서 파일 검색, 특정 파일에 개별 구성 적용 등을 수용할 필요가 있습니다.
  • 다운로드된 모든 파일/URL의 해시를 잠그고 해시 불일치에 대한 예외가 발생합니다.
  • 유형 지원을 추가하려면 vscode 플러그인을 생성해야 합니다.

  • 비전


    url-import가 타사 모듈인 경우의 모습입니다. 실행url-import install은 파일을 다운로드하고 몇 가지 다른 검사를 수행합니다.

    import { urlImport } from 'url-import';
    const file = urlImport('https://reggi.com/foo/bar.ts')
    


  • 공통 폴더https://reggi.com/foo/bar.ts로 다운로드~/url-import .
  • bar.ts , requireimport에 대한 urlImport 구문 분석
  • 로컬 종속성이 있는 경우 해당 파일을 다운로드하십시오.
  • 패키지 가져오기가 있는 경우 package.json 확인을 시작합니다.

  • 체크 https://reggi.com/foo/tsconfig.json
  • 위에서 찾을 수 없는 경우 확인https://reggi.com/tsconfig.json
  • current-working-directory에 url-import.lock를 저장하고 기본적으로 이와 비슷한 "스냅샷"{ fileUrl, fileHash, tsconfigUrl, tsConfigHash, packageUrl, packageHash }을 포함하고 사용/발견된 모든 URL을 저장하고 모든 파일의 내용을 해시합니다. 이를 통해 상태를 재생하고 변경 사항을 추적할 수 있는지 확인할 수 있습니다.
  • 체크 https://reggi.com/foo/url-import.lock
  • 위에서 찾을 수 없는 경우 확인https://reggi.com/url-import.lock
  • 크롤링된 파일에서 npm 모듈을 뽑아 관련 해결된 모듈과 일치시킵니다package.json.
  • 모든 해시/잠금 확인

  • 결론



    Node.js에서 종속성을 관리하기 위한 더 강력한 시스템이 있으면 좋겠고 Node.js 팀이 URL을 사용하여 시스템을 만드는 데 관심이 있었으면 좋겠지만 NPM과 URL 가져오기와 NPM 가져오기를 혼합하면 많은 요청을 하고 URL을 크롤링해야 하기 때문입니다.

    어떻게 생각해? Node.js는 NPM에서 멀어져야 합니까? 모두 Deno로 전환해야 합니까?

    좋은 웹페이지 즐겨찾기