0

webpack 1.13.2에 번들 된 여러 개의 진입 점이있는 응용 프로그램이 있습니다. 저는 ES2015 모듈과 es-2015 프리셋이있는 babel도 사용하고 있습니다.웹팩. 엔트리 포인트 종속 가져 오기를 사용할 수 있습니까?

entry: { 
     entry1: "app/somechunk/entry1.js", 
     entry2: "app/somechunk2/entry2.js" 
} 

특정 모듈에 대한 조건부 가져 오기를 원합니다. 가져 오기는 진입 점에 의존해야합니다. 다음과 같이 입력하십시오 :

if(entry1){ 
    import locale from 'app/somechunk/localeDictionary1.js' 
} else { 
    import locale from 'app/somechunk2/localeDictionary2.js' 
} 

어떻게하면됩니까?

+0

어쩌면 내가 당신의 질문을 이해하지 않지만, 엔트리 파일은 예를 들어, 이미 격리되어있어, 결국 별개의 파일입니다. 각 개별 항목에서 원하는 특정 파일 만 가져 오면 if 조건이 필요하지 않습니다. –

+0

@MarkGreenstock. Translator.js와 여러 현지화 사전을 예로 들어 보겠습니다. 모든 진입 점에 대해 translator.js가 필요합니다. 진입 점에 따라 조건부로 현지화 사전을 가져 오려고합니다. –

+0

번역기는 사전없이 쓸모가 없으므로 번역기를 사용하려고하는 모든 파일에서 번역기로 사전을 가져올 수 있습니다. (각 모듈 당 2 수입품). 모듈이 많으면 고통 스러울 것입니다. –

답변

2

글쎄, 꽤 자주 제기되는 질문입니다. javascript에는 조건부 가져 오기를 사용할 수 없으며 종속성은 모듈의 정적 속성입니다. dependency inversion

공통 모듈을 사용하고 그것을 위해 구성자 기능을 제공하여

객체 지향 솔루션 : 당신은 기본적으로 두 가지 옵션이 있습니다. 항목에 대한 aliases

구성 별도의 빌드 작업을 사용하고 그들을 구성

// locale.js 
export var dictionary = {}; 
export function setDictionary(dict) { 
    dictionary = dict; 
} 

// locale-en.js 
import { setDictionary } from "./locale"; 
setDictionary({ yes: "yes" }); 

// locale-hu.js 
import { setDictionary } from "./locale"; 
setDictionary({ yes: "igen" }); 

// entries/entry-hu.js 
import "../locales/locale-hu"; 
import "../application"; 

// entries/entry-en.js 
import "../locales/locale-en"; 
import "../application"; 

// application.js 
import { dictionary } from "./locales/locale"; 
console.log(dictionary); 

정적 설정 :

{ 
    entry: "entry.js", 
    resolve: { 
     alias: { 
      "locale": "/locale/locale-en.js" 
     } 
    } 
    ... 
} 

+0

감사합니다. 정확히 내가 원하는 것. –

관련 문제