[node.js] 내 테스트를 .npm 무시해야합니까?

정확히 무엇을 넣어야 .npmignore합니까?

테스트? 물건처럼 .travis.yml, .jshintrc? 모듈을 실행할 때 필요하지 않은 것이 있습니까 (readme 제외)?

이에 대한 지침을 찾을 수 없습니다.



답변

아마 알다시피, NPM은 거기에 들어가야 할 것을 구체적으로 명시하지 않고 기본적으로 무시되는 파일 목록을 가지고 있습니다 . 존재하지 않는 경우 기본적 으로 모든 .gitignore것이 무시 되므로 많은 사람들이 사용 하지 않습니다. 또한 설정에 관계없이 기본적으로 많은 파일이 이미 무시되고 위 링크에 설명 된대로 일부 파일은 항상 무시되지 않습니다.npm.npmignore

기본적으로의 하위 집합이기 때문에 항상 있어야하는 것에 대한 공식적인 내용은 많지 .gitignore않지만 5 년 동안 노드를 사용하여 수집 한 내용은 다음과 같습니다.

참고 : 프로덕션 이란 모듈 자체에서 개발하지 않고 누군가가 모듈을 사용하는 경우를 의미합니다.


시험판 크로스 컴파일 소스

  • 장점 : JavaScript로 크로스 컴파일하는 언어를 사용하는 경우 릴리스 전에 미리 컴파일하고 .coffee패키지에 파일을 포함하지 않고 git 저장소에서 계속 추적 할 수 있습니다.

남은 파일 빌드

  • 장점 : 같은 것을 사용하는 사람들 node-gyp은 빌드 중에 생성되는 개체 파일이 패키지에 들어가면 안됩니다.
  • 단점 : .gitignore어쨌든 항상 들어가야 합니다. npm의 관점에서 .npmignore덮어 쓰기 때문에 이미 파일을 사용하고 있다면 여기에 이러한 것들을 넣어야합니다 .gitignore.

테스트

  • 장점 : 생산 코드의 수하물이 적습니다.
  • 단점 : 테스트 실패를 유발하는 오래된 버전의 노드 실행과 같은 시스템 특정 오류가 발생할 가능성이 적은 경우 라이브 환경에서 테스트를 실행할 수 없습니다.

연속 통합 설정 / 메타 파일

  • 장점 : 다시 말하지만, 수하물이 적습니다. 상황이 다음과 같은 .travis.yml코드를 사용하여 테스트, 또는 볼 필요가 없습니다.

비 readme 문서 및 코드 예제

  • 장점 : 수하물이 적습니다. Readme에서 최소한의 실행 가능한 기능을 표현할 수없는 경우 모듈이 너무 큽니다.
  • 단점 : 사람들은 자신의 파일 시스템에서 완전한 문서와 코드 예제를 볼 수 없습니다. 저장소를 방문해야합니다 (인터넷 연결도 필요함).

Github-pages 객체

  • 장점 : 모듈을 사용하는 경우 CNAME파일 또는 자리 표시 자로 릴리스를 흩뿌 릴 필요가 없습니다 .index.htmlgh-pages

bower.json 및 친구들

  • 장점 : 릴리스 전에 종속성을 구축하기로 결정한 경우 최종 사용자가 bower를 설치 한 다음 더 많은 것을 설치할 필요가 없습니다. 나는 개인적으로 그 물건을 패키지에 보관할 것입니다. 를 수행 할 때 npm installnpm에만 의존하고 다른 외부 소스는 사용하지 않아야합니다.

기본적으로 npm 패키지에서 보관하고 싶은 것이 있지만 npm 저장소에서는 보관하지 않으려는 경우 사용해야합니다. 긴 항목 목록은 아니지만 npm은 사람들이 패키지에 관련없는 개체를 고수하는 것보다 기능을 구축하는 것이 좋습니다.


답변

나는 lante의 짧고 통사적인 대답SamT의 큰 대답에 동의합니다 .

  • 패키지에 테스트를 포함해서는 안됩니다.
  • 패키지에는 프로덕션 런타임 파일 만 포함되어야합니다.
  • 그러면 패키지를 더 간단하고 빠르게 다운로드 할 수 있습니다.

그 답변에 대한 나의 기여 :

.npmignore 는 패키지 파일 선택을위한 블랙리스트 방법입니다. 그러나보다 실용적인 방법으로 package.json 의 파일 필드사용 하여 패키지에 포함해야하는 파일을 허용 목록에 추가 할 수 있습니다 .

{
  "files": [
    "lib/",
    "index.js"
  ]
}

나는 그것이 더 간단하고 미래의 증거라고 생각하며 더 나은 의미를 가지고 있습니다.)


답변

그냥 언제 누군가가 할, 명확하게 npm install your-library, NPM은 당신이 당신에 포함하도록 파일을 제외하고는 REPO에 포함되어있는 모든 소스 파일을 다운로드합니다 .npmignore.

라이브러리를 설치하는 사람들은 라이브러리를 실행하기 만하면되며 다른 것은 필요하지 않습니다.

예를 들어, 누군가가 라이브러리를 설치하면 아마도 그 / 그녀는 당신 .travis.yml이나 당신의 .jshintrc파일, 심지어 일부 이미지, Grunt 파일, 문서 등에 대해 신경 쓰지 않을 것입니다 .

.npmignore npm 패키지에 파일 수를 줄이고 다운로드 속도를 높일 수 있습니다.


답변

테스트를 포함하지 마십시오. 종종 테스트는 실제 코드베이스 크기의 5 배와 같습니다. 테스트가 Github 등에있는 한 충분합니다.

그러나 반드시해야 할 일은 게시 된 형식으로 NPM 패키지 테스트하는 것 입니다 . 실제 코드베이스에 있지만 테스트 스위트의 일부가 아닌 스모크 테스트를 만듭니다.

패키지를 tarballing 한 후 테스트하는 방법은 https://github.com/ORESoftware/r2g 에서 읽을 수 있습니다.

실제로 NPM에 게시하지 않고`npm publish` 결과를 테스트하는 방법은 무엇입니까?


답변