programing

package.json에서 'files'및 'directories'속성을 어떻게 사용합니까?

nasanasas 2021. 1. 8. 08:20
반응형

package.json에서 'files'및 'directories'속성을 어떻게 사용합니까?


package.jsonfiles소품 및 / 또는 소품 이있는 경우 directories:

  "files": [
    "./src/assets/fonts/"
  ],
  "directories": {
     "assets:": "./src/assets"
  }

그것들을 사용하는 몇 가지 방법은 무엇입니까? 문서는 일단 지정되면 수행 할 수있는 작업을 언급하지 않습니다.

예를 들어 파일 문서 는 다음과 같이 말합니다.

"파일"필드는 프로젝트에 포함 할 파일의 배열입니다. 어레이의 폴더 이름을 지정하면 해당 폴더 내의 파일도 포함됩니다.

"프로젝트에 포함"이란 무엇을 의미합니까? 어디에 포함 하시겠습니까? 이전에 없었던 지금은 어떻게 접근 할 수 있습니까?

에서 디렉토리 섹션 , 워드 프로세서 말 :

앞으로이 정보는 다른 창의적인 방법 으로 사용될 수 있습니다 .

기존의 창의적인 사용 방식은 무엇입니까?


"프로젝트에 포함"은를 실행할 때 생성되는 패키지 tarball에 파일이 있음을 의미합니다 npm publish. npm pack실제로 게시를 트리거하지 않고 검사를 위해 tarball을 생성하도록 실행할 수도 있습니다 . 이렇게하면 생성 된 tarball을 실제로 열고 어떤 파일이 포함되었거나 포함되지 않았는지 검사 할 수 있습니다.

무시할 파일의 블랙리스트로 작동 하는 동안 .npmignore(또는 .gitignore프록시로 작동하지 않는 경우 .npmignore) (기본적으로 다른 모든 항목을 포함) files어레이는 화이트리스트입니다. 즉, 기본적으로 모든 것을 포함하는 대신 filesarray가 지정 되면 모든 것이 기본적으로 제외되고 명시 적으로 나열된 파일 만 패키지 된 tarball에 포함됩니다.

예를 들어 패키지가 브라우저에서 사용하기위한 라이브러리라고 가정합니다. 코드는에 lib/있으며 browserify를 실행하여에서 브라우저 호환 lib로 컴파일 dist/index.js합니다. 존재하지 않는 .gitignore사실로 사용되는에 나열된 여러 파일로 시작 .npmignore합니다. 그러나 이제 dist/생성 된 파일로 가득 차 있으므로 git repo에서 무시하기를 원합니다. 에 추가 .gitignore하면 git repo에서 제외 되지만 tarball 패키지에서도 무시됩니다 . 당신은 두 가지 옵션이 있습니다 그래서 : 당신의 중복 .gitignore으로 .npmignore만 목록 dist/에를 .gitignore. 이렇게하면 두 개의 파일을 거의 동기화 상태로 유지해야합니다. 이 방법은 tedius이며 오류가 발생하기 쉽습니다.

다른 대안은를 사용하지 .npmignore않고 대신 패키지의 files배열 에서 실제로 원하는 파일을 나열하는 것 입니다. README.*, package.json, CHANGELOG.*(아마도 몇 사람이)에 관계없이 자동으로 TAR 파일에 포함되어 있습니다. 따라서 간단히 추가 "files": [ "dist" ]하면 완료됩니다. 이제 패키지 타르볼는에서 원본 소스 JS 포함되지 않습니다 lib,도 tests/등 대신 단지의 실제 컴파일 된 lib 디렉토리가 포함됩니다 dist/.

에 관해서는 directories일반적으로 lib(es5의 경우), src(es6, coffeescript, typescript 등 소스의 경우), dist(브라우저 또는 vm 특정 빌드의 경우) test,, output(범위 보고서 등과 같은 임시 생성 파일의 경우 ) 등을 나열 합니다 doc. 이 속성은 npm 또는 다른 도구에서 직접 사용되지 않으며 디렉터리 구조를 명시 적으로 만듭니다. 또한 다음과 같이 npm 스크립트에서 디렉토리를 참조 할 수 있습니다.

"scripts": {
  "clean": "rm -rf $npm_package_directories_dist $npm_package_directories_output",
  "lint": "eslint $npm_package_directories_src",
  "test": "teenytest $npm_package_directories_test",
}

이런 식으로 디렉토리는 한 번만 지정되며 변경 될 경우 단일 위치에서만 변경하면됩니다 (package.json 전체에서 여러 개가 아닌).

참조 URL : https://stackoverflow.com/questions/40795836/how-do-you-use-the-files-and-directories-properties-in-package-json

반응형