code

내 테스트를 .npm 무시해야합니까?

codestyles 2020. 9. 14. 20:56
반응형

내 테스트를 .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.

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

For example, when someone installs a library, its probably that he/she doesn't care about your .travis.yml or your .jshintrc files, or even some images, Grunt files, documentation, etc.

.npmignore could let your npm package to have less files, and faster to be downloaded


Don't include your tests. Oftentimes tests are like 5x the size of the actual codebase. As long as your tests are on Github, etc, that's good enough.

But what you absolutely should do is test your NPM package in its published format. Create some smoke tests that reside in the actual codebase, but are not part of the test suite.

You can read about testing your package after tarballing it, here: https://github.com/ORESoftware/r2g

How to test an `npm publish` result, without actually publishing to NPM?

참고URL : https://stackoverflow.com/questions/25124844/should-i-npmignore-my-tests

반응형