从webpack中剥离dynamic需求
我有一个类似这样的代码:
export default { something: true, mockData: process.env.USE_MOCK && require('./mocks/something.js').default };
process.env.USE_MOCK
用webpack.DefinePlugin
设置为true
或false
。 我用这个来启动我的应用程序,使用USE_MOCK=true npm run dev
或npm 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;