2017-10-13 36 views
1

我的TypeScript代碼中有一個基類,它接受一個對象作爲參數之一。我有很多擴展這個基類的類。這看起來像:WebPack:將'require'結果替換爲{}

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

我已經使用這種方法來創建和調試我的網站i18n。現在我需要擺脫生產代碼中的json片段。但是我想關閉它們,而不是完全從代碼中移除它們,就好像我以後可能需要它們一樣。

所以我試過WebPack IgnorePlugin,但它給了我Cannot find module "./finances.tran.json"錯誤。

有沒有什麼辦法可以在建築階段用{}代替tran\.json的所有require

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')) 
]