2016-09-24 3 views
3

이전 require.js 툴킷을 webpack으로 변환하려고합니다. 현재의 과자 설치에서는 두 개의 다른 번들을 만들고 응용 프로그램을 시작할 때 필요한 번들을 결정하는 부트 스트랩 파일을 만듭니다.Webpack 여러 개의 항목에 대한 여러 resolve.alias 목록

웹팩으로 전환 할 때이 구조를 유지해야한다고 생각했습니다. 그러나 여러 항목으로 webpack을 구성하려고 할 때 별도의 엔트리 포인트를 별개로 해결할 수없는 문제가 발생했습니다. 별칭 목록을 제공 할 수 있어야합니다. 다른 모듈을 모듈 이름 (예 : require("my-module"))이 필요한 많은 모듈이 있고 두 번들에 서로 다른 my-module 인스턴스가 있기 때문에 별칭 목록을 제공 할 수 있어야합니다.

웹팩으로이를 달성 할 수있는 방법을 찾지 못했습니다. 이 사고 방식에 얽매이고이 문제에 대한 대안 솔루션을 볼 수 없기 때문에 어떤 조언도 환영합니다!

고양이 :

여기

module.exports = { 
    entry: { 
    cats: ["./app/app-cats"], 
    dogs: ["./app/app-dogs"] 
    }, 
    output: { 
    path: path.join(__dirname, "bin"), 
    filename: "[name].entry.js" 
    }, 
    resolve: { 
    alias: { 
     // I would like to provide both entry points their own 
     // list of aliases, but currently webpack is not supporting this. 
     cats: { 
     animals: './cats.js' 
     }, 
     dogs: { 
     animals: './dogs.js' 
     }, 
    } 
    }, 
}; 

우리의 현재 빌드가 어떻게 작동하는지 파일의 나머지 부분은 설명하기 위해 수 있습니다 webpack.config.js : 여기

는 내가하고 싶은 것이 코드의 된 .js

var cats = ['dave', 'henry', 'martha']; 
module.exports = cats; 

dogs.js

이 질문에 대한 답이없는 것처럼
var dogs = ['hulda', 'hilla']; 
module.exports = dogs; 

앱 cats.js

var animals = require('animals') 
console.log(animals); 

앱 dogs.js

var animals = require('animals') 
console.log(animals); 

답변

0

나는 우리가이 문제를 해결 결국 방법을 설명하겠습니다 우리 계획.

우선, webpack 구성을 변경하여 두 번들 대신 번들을 하나만 빌드합니다. 그런 다음 두 가지 구현이있는 각 모듈에 대해 "스위처"모듈을 작성했습니다. Switcher 모듈은 제어 값을 기반으로 올바른 구현을 반환하는 새로운 모듈입니다. 우리의 경우에는 결국 window 객체에서 모드를 읽는 appMode 모듈을 작성하게되었습니다. 우리 스위처 모듈 중 하나의

예 : 우리는 두 개의 서로 다른 구현을 가지고 100 개 이상의 모듈을 가지고로

define(["appMode", "scripts/userData/firstUserData", "scripts/userData/secondUserData"], 
(appMode, firstImplementation, secondImplementation) => appMode.useFirstData() ? firstImplementation : secondImplementation) 

이것은 힘든 변화가 있었다, 그러나 그것은 작동합니다.

관련 문제