WebPack:替换'要求' {}的结果

时间:2017-10-13 06:48:37

标签: typescript webpack webpack-2

我的TypeScript代码中有一个基类,它接受一个对象作为args之一。我有很多类扩展了这个基类。这看起来像:

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

我已经使用这种方法为我的网站创建和调试i18n。现在我需要摆脱生产代码中的json片段。但我想关闭它们,而不是完全从代码中删除它们,就像我以后可能需要它一样。

所以我尝试了WebPack IgnorePlugin,但它给了我Cannot find module "./finances.tran.json"错误。

有没有办法在建设阶段用require替换所有tran\.json的{​​{1}}?

更新

使用虚拟{}文件解决它:

.json

2 个答案:

答案 0 :(得分:1)

使用虚拟.json文件解决它:

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

答案 1 :(得分:0)

您可以使用string-replace-loader之类的内容来替换字符串。

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

或者其他一些正则表达式,而不是我在这里用来覆盖更多json文件的正则表达式。