2016-11-05 9 views
4

저는 Angular2 프로젝트를 진행하고 있습니다. Angular2 aot 문서를 살펴보고 ngFactory 파일을 생성 할 수있었습니다. 나는 문서에서 제안 된대로 롤업 js를 사용했다. 나는 비 es6 npm 패키지를 가지고있다. require를 사용하여 es6이 아닌 패키지를로드했습니다.롤업 공통점

문서 (angular2 및 rollup)는 es6이 아닌 모듈을 묶는 데 rollup-plugin-commonjs를 사용하도록 제안합니다. 다음은 롤업 구성입니다.

export default { 
 
    entry: 'scripts/main.js', 
 
    dest: 'build/app.js', // output a single application bundle 
 
    sourceMap: true, 
 
    format: 'iife', 
 
    context: 'this', 
 
    plugins: [ 
 

 
     nodeResolve(
 
      { 
 
       jsnext: true, 
 
       module: true, 
 
      } 
 
     ), 
 
     commonjs({ 
 
      include: 'node_modules/**/**', 
 
     }) , 
 

 
     uglify() 
 
    ] 
 
}

나는 장소에 commonjs 플러그인을 가지고있다. 하지만 'require require'는 여전히 브라우저 오류입니다. 어떻게하면 non-es6 모듈을 번들로 묶어서 webpack/browserify의 도움을 받아야하는지 알려주세요.

답변

0

현재 사용하고있는 설치 프로그램은 공급 업체/응용 프로그램 파일을 별도의 번들로 나눕니다. 이 문제가 AoT와 함께 작동하도록이 을 조사하는 방법을 살펴 보지 못했지만이 방법으로 작동하는 commonjs 모듈이 있습니다.

테스트를 위해 내 응용 프로그램 번들을 만들 때만 속도가 빨라졌습니다 (Webpack 및 20s 빌드 시간에 문제가 있음).

import * as _leaflet from 'leaflet/dist/leaflet'; //leaflet is installed via npm in this case. 
... 
export default { 
    ... 
    _leaflet 
}; 

을 그리고 commonjs를 사용하는 vendor.rollup.js 파일 :

vendor.ts 파일에서

나는 다음과 같은 것을 가지고 (광산은 main.ts 파일과 같은 디렉토리에) 플러그인은 다음과 같습니다.

commonjs({ 
    include: [ 
     helpers.root('node_modules', '**') //This is just a method to make an absolute path to node_modules. See Angular 2 webpack docs for that. 
    ] 
}) 

이는 공급 업체 번들을 만듭니다.

내 app.rollup.js에서 (내 app 번들을 생성하는 설정 파일).

export default { 
    entry: 'src/main.ts', 
    dest: 'bundles/app.js', 
    format: 'iife', 
    sourceMap: true, 
    moduleName: 'app', 
    plugins: [ 
     ... 
    ], 
    external: [ 
     'leaflet/leaflet' //Yeah, you can rename it to have nicer looking imports. 
    ], 
    globals: { 
     ... 
     'leaflet/leaflet': 'vendor._leaflet' //And map it to the correct global var here. 
    } 
}; 

그리고 마지막으로 내 응용 프로그램에서 나는

import * as L from 'leaflet/leaflet';

알림을 사용할 수 있습니다 : 나는 AOT 컴파일 또는 생산 코드를 한 번에 아직 한 단계로이 시도하지 않았습니다.