2014-11-24 1 views
4

bower과 함께 복잡한 구조적 문제가 있습니다. JS 코드가 포함 된 동적 위젯을 사용하여 페이지를 만드는 온라인 플랫폼을 구축하고 있습니다. 위젯은 미리 정의 된 형식, 설명, 아이콘 등을 가지며 apk, war, jar, ear의 프런트 엔드 코드와 같은 아카이브에 패키지됩니다. 사용자는 웹 사이트가 이미 배포되었을 때 위젯을 동적으로 추가 할 수 있습니다.자동화 된 방식으로 여러 bower.json 종속성 병합

우리는 bower을 사용하고 있으며 문제는 다음과 같습니다. 위젯은 또한 bower 의존성을 지정할 수 있어야합니다.

단순화 된 디렉토리 레이아웃은 다음과 같다 :

  • bower_components를 (웹 사이트 구축에 사용)

    • bower.json
    • gulpfile.js # 모든 위젯
    • 위젯에서 우리 자신의 deps + deps
      • 위젯 1 # 여기에서 어떤 이름도 가능합니다.
      • 위젯 2
      • 위젯 랜덤 레이아웃 상기 위젯의 각
      • 다른 위젯 - # 1 (종속성리스트만을 포함하거나 dependencies.json 같은 단순화 된 버전) 동일한
        • bower.json이다.
        • 많은 다른 파일

    위젯 bower.json 다른 위젯에서 모든 deps과 통합해야 업로드되면, gulp build 실행하고 모든 것을 다시 작성됩니다.

    모든 bower.json을 어떻게 하나로 병합합니까? 특히 동일한 의존성이 두 번있을 때. 하나의 위젯은 "jquery": "<=2.1.0"에 의존하고 다른 위젯은 "jquery": "^2.1.0"에 의존합니다. 둘 다 호환되지만 bower.json에서 어떤 문자열을 씁니 까? 이 두 글자를 쓰면 초를 사용하여 최신 jquery를 설치합니다. 2.1.1은 이미 첫 번째 위젯과 호환되지 않습니다. 그리고 그것은 더 간단한 사용 사례입니다.

    예를 들어 <=과 같이 가능한 모든 semver 스펙 변형이 없을 것이라고 가정 할 수 있습니다. 위젯 작성자가 내 자신의 종속성 사양을 사용하도록 할 수도 있지만이를 설계하는 방법을 생각할 수는 없습니다.

    도움을 주시면 감사하겠습니다.

    위젯 종속성 해결을 위해 접근하는 다른 접근은 허용되지만 참고 : 은 런타임에 여러 위젯이로드되기 때문에 자신의 버전의 libs가 될 수 없습니다. 한 번에 두 개의 jquery를 가질 수는 없습니다. 예를 들어 두 위젯이 위의 예제 에서처럼 스펙을 사용하기 때문입니다.

    UPD : 저는 RequireJS에 대해 알고 있으며 실제로 사용하고 있습니다. 하지만 먼저 의존성 자체를 다운로드해야하므로 나중에 RequreJS와 함께 사용할 수 있습니다.

  • 답변

    2

    이 솔루션은 다음과 같은했다 프로젝트의 bower.json은 bower-base.json으로 이름이 변경되고 bower.json은 모든 위젯이 종속성 속성에 추가 된 bower-base.json에서 생성됩니다. 그런 다음 bower는 위젯의 종속성을 자동으로 처리합니다.

    +0

    저는 강요가 처음입니다. 우리가 유익을 얻을 수 있도록 예를 들어 자세하게 설명해주십시오. 감사! – pankajt

    +0

    해결책은 각 위젯이 bower 패키지 자체라는 것입니다. 메인 프로젝트의 bower.json은 각 위젯에 의존합니다. –

    +0

    주 프로젝트에서 동적으로 위젯을 선택할 수 있습니다. 매번 – pankajt

    0

    퇴비로해야하는 이유가 있을까요? Bower는 런타임 종속성을위한 것이 아닙니다.이를 위해 RequireJS과 같은 것을 사용하고 싶습니다. 이 bower.json의와

    각 위젯 자체를하는 이물 패키지;

    +0

    오, 음, 이미 RequireJS!를 사용합니다! 하지만 종속성 자체를 먼저 다운로드하여 RequireJS와 함께 사용할 수있는 방법은 무엇입니까? –

    +0

    오, 당신이 말하는 것을 봅니다. 이 방법에 대해 : 각 위젯에 bower.json (및 bower_components 디렉토리) 파일을 만든 다음 (위젯을 사용하여 하위 디렉토리에 배치 한 경우) 기본 bower.json 파일에 작업을 넣어 해당 파일에 bower install을 실행하면 어떨까요? 디렉토리? – Jaybill

    +0

    질문에서 설명했듯이 꽤 불가능합니다. 두 위젯이 jQuery에 의존하면 두 개의 jquery를 동시에로드 할 수 있습니다. 이것은 분명히 문제입니다. –

    관련 문제