从webpack中剥离dynamic需求

我有一个类似这样的代码:

export default { something: true, mockData: process.env.USE_MOCK && require('./mocks/something.js').default }; 

process.env.USE_MOCKwebpack.DefinePlugin设置为truefalse 。 我用这个来启动我的应用程序,使用USE_MOCK=true npm run devnpm run dev来运行模拟数据。

我希望Webpack在UglifyJS的死代码删除的构build过程中删除这些dynamic需求,但我注意到他们仍然在那里,所以something.js将在构build的捆绑。

在我的情况下,输出类似于:

 module.exports = { something: true, mockData: (false) && __webpack_require__(181).default }; 

有没有办法如何从包中完全删除导入?

顺便说一句。 我认为这样的工作:

 let mockData; if (process.env.USE_MOCK) { mockData = require('./mocks/something.js').default; } export default { something: true, mockData }; 

我宁愿内联要求,因为我已经有了这种模式不less。

尝试这样的事情:

 export default { something: true, mockData: process.env.USE_MOCK ? require('./mocks/something.js').default : undefined }; 

或者分别build立模块导出:

 let module_export; module_export.something = true; if (process.env.USE_MOCK) { module_export.mockData = require('./mocks/something.js').default; } export module_export;