2017-10-13 4 views
1

개체를 args 중 하나로 받아들이는 TypeScript 코드에 기본 클래스가 있습니다. 이 기본 클래스를 확장하는 많은 클래스가 있습니다. 모양은 다음과 같습니다.WebPack : {필요} 결과를 {}로 바꿉니다.

class Finances extends I18nBase { 
    constructor(){ 
     super(require('./finances.tran.json')); 
    } 
} 

이 방법을 사용하여 내 사이트의 i18n을 만들고 디버깅했습니다. 이제 프로덕션 코드에서 json 파편을 제거해야합니다. 그러나 나중에 코드가 필요할 수있는 것처럼 코드에서 코드를 완전히 제거하지 않고 코드를 전환하고 싶습니다.

WebPack IgnorePlugin을 시도했지만 오류 Cannot find module "./finances.tran.json"이 발생합니다.

requiretran\.json을 모두 빌딩 단계에서 {}으로 바꿀 수 있습니까?

UPDATE는 다음과 같이 더미 .json 파일을 해결 :

plugins: [ 
    new webpack.NormalModuleReplacementPlugin(/tran\.json$/, 
     path.resolve(__dirname, srcRoot, 'empty_tran.json')) 
] 

답변

0

당신은 문자열을 대체 할 string-replace-loader 같은 것을 사용할 수 있습니다.

module: { 
    loaders: [ 
    { 
     test: /\.ts$/, 
     loader: 'string-replace', 
     query: { 
     search: '.\.\/finances\.tran\.json', replace: '{}', 
     flags: 'g' 
     } 
    } 
    ] 
} 

또는 json 파일을 더 많이 사용하기 위해 여기에 사용한 공식 대신 다른 정규식을 사용하십시오.

1

는 다음과 같이 더미 .json 파일을 해결 :

plugins: [ 
    new webpack.NormalModuleReplacementPlugin(/tran\.json$/, 
     path.resolve(__dirname, srcRoot, 'empty_tran.json')) 
]