2014-02-17 2 views
3

프로젝트에서 browserify 및 browserify-shim을 사용하고 있으며 gulp-browserify를 사용하여 gulp를 실행합니다.browserify-shim에서 모든 심이 필요하지 않도록하려면 어떻게해야합니까?

gulp.src(['./resources/js/main.js']) 
    .pipe(browserify({ 
     shim: { 
      angular: { 
       path: './node_modules/angular/angular.js', 
       exports: 'angular' 
      }, 
      'angular-animate': { 
       path: './node_modules/angular-animate/angular-animate.js', 
       exports: 'ngAnimate', 
       depends: { 
        angular: 'angular', 
        jQuery: 'jQuery' 
       } 
      }, 
      [...] 
     } 
    })) 
    .pipe(concat('app.js')) 
    .pipe(gulp.dest('./web/js')); 

이 설정은 대부분 잘 작동합니다. 그러나, 도없고이 require()에 의해 호출 되더라도, Browserify는 항상 개의 모든 심박 라이브러리를 빌드에 포함시킵니다.

설명서는이 항목에 존재하지 않는 것 같습니다. 이것을 막을 수있는 방법이 있습니까? 나에게는 매우 직관적 인 것처럼 보입니다. 빌드에는 실제로 필요한 것을 포함해야합니다.

: 글로벌 (당신을 "수출"이라고 말하고 특히 객체)가 그 라이브러리를 만들고, 당신이 Browserify에 심은

답변

0

(업데이트 나는 나파/NPM을 사용하여 각도 및 기타 libs와 설치). 규칙은 해당 라이브러리에 여전히 require()을 사용하지만 라이브러리를 module.exports으로 변환하면 코드에서 전역 참조를 바꿀 필요가 없도록 최선의 방법입니다. 게다가, 좋은 노드 형태로 상단에 필요한 모든 파일을 나열하는 것이 더 좋습니다. :)

귀하의 질문에 답하기 위해이 라이브러리를 축소하여 browserify에 전역 변수로 포함시켜 어디서나 사용할 수 있도록 했으므로 빌드에 자동으로 포함됩니다. require().

gulp.env 같은 것을 기반으로하는 것이 아닌 일부를 포함하려는 경우 options 개체를 별도로 작성하여 browserify 함수에 전달할 수 있습니다.

관련 문제