2014-12-04 3 views
1

다른 로컬 패키지에 종속되어있는 로컬 패키지는 어떻게 처리해야합니까? 단순화를 술에 대한 npm을 사용하여 nodejs의 로컬 패키지 종속성을 처리하는 방법

, 우리는 다음과 패키지가 있다고

  • api-
  • people 명시 응용 프로그램 - 사람
  • data-access 다루는 패키지 - 데이터 액세스를 다루는 패키지

그리고 종속성은

입니다. people
  • people
  • data-access는 현재 우리가 파일 종속 관계로 이러한 종속성 설정이에 따라 달라집니다에 5,

    • api이 달려있다.

      e.e. 이것은 우리가 하나 개의 패키지로 업데이트하고 그것에 의존하는 다른 패키지에서 이러한 변경을 할 때 우리가 그것을 피타를 찾는하고 있다는 것입니다으로 api package.json는

      "dependencies": { 
          "people": "file:../people" 
      } 
      

      문제가있는 것입니다.

      • NPM을 설치 - 그러나 변경 사항이있는 경우이 이전에 설치 패키지를 덮어 쓰지 않습니다, 그래서 우리는 node_modules 디렉토리에서 이전을 삭제해야합니다 : 우리의 생각

        옵션은 npm install ...을 다시 실행하면 패키지 의존성이 심하면 niggly가 될 수 있습니다.

      • NPM 링크 -이 버전 관리를 생존하지 않기 때문에 우리는 어쩌면 우리가 npm link 명령을 실행 할 지역의 빌드 스크립트의 몇 가지 종류가, 그냥 지금은 그것에 대해 생각 ... 아이디어를 판매하지 않는 우리를 위해 ... 이런 식으로 버전 제어에서 살아남을 수 있습니다. 그건 쓸데없는 일 이겠니?

      • 불평 - 우리는 아직이 분야에 너무 깊이 뛰어 들지 않았지만 좋은 방향으로 느껴집니다. 우리는 인터넷 검색의 조금이 건너 온 : https://github.com/ahutchings/grunt-install-dependencies

      그래서, 어떤 옵션을 우리의 상황에 가장 적합한 것인가?
      아직 생각하지 못했던 다른 옵션이 있습니까?

      ps. 우리는 노드에서 PoC를 수행하는 .NET 상점이므로 아무것도 모른다고 가정합니다!

      Pps. 우리가 프로젝트를 잘못 설정했다는 것을 강력히 믿고 우리가 더 작은 개별 패키지를 가져서는 안되는 경우, 그 주제에 대한 약간의 독서에 대한 링크가있는 주석에 대해 알려주십시오.

    답변

    1

    그래서 '많은 작은 패키지'로가는 것이 좋습니다. 아직 12factor.net을 확인하십시오.

    귀하의 질문에 대한 특정 답변에서 가장 최선의 방법은 주로 어떻게 관리하고 싶은지를 고려하는 것입니다.

    '하위 구성 요소'가 모두 앱의 일부일 경우 (예 : 데이터 액세스가 의미하는 것처럼) 동일한 폴더 구조로 유지하면 이 아닌에서 package.json으로 매핑하십시오. 모두, 그리고 단지 require 당신이 그들을 필요로합니다. 이 경우 모든 것이 함께 버전 화되며 동일한 git 저장소에 포함됩니다.

    별도의 자식 저장소에 모두 보관하고 싶다면 npm 링크를 사용할 수 있지만 솔직히 package.json의 URL 구문을 사용하는 것이 더 유용하다는 것을 알았습니다.

    당신이 명시 적 종속성 중 하나를 업데이트 할 때
    dependencies: { 
        "people" : "git://path.to.git:[email protected]" 
    } 
    

    그런 다음, 당신은 당신의 package.json에 버전 번호를 충돌하고 다시 npm install를 실행해야합니다.

    +0

    아, 재미 있습니다 ... 그래서 당신은 그것을 별도의 패키지로 설정하는 것이 과잉이라고 말하고 있습니다. 폴더 구조를 유지하고 경로를 사용하도록 요구하십시오 ... 그것에 대해 생각하지 않았습니다. 건배. – Charlino

    +0

    많은 경우 그렇습니다. 다른 앱에서 재사용 할 수있는 앱이라면 별도로 버전을 관리해야합니다. 예를 들어, 별도의 REST 및 SOAP API를 호스팅 할 계획이라면 사람 및 데이터 액세스 모듈을 진정으로 독립적으로 만드는 것이 더 합리적입니다. 노드에서 미래에이를 변경하는 것은 그리 어렵지 않으므로 너무 많이 땀을 흘리지 마십시오. – Paul

    관련 문제