У меня есть код, подобный этому:Strip динамический требует от WebPack
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, но я заметил, что они остаются там, и поэтому something.js
будет в построенном пакете.
В моем случае вывод аналогичен:
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
};
Я предпочел бы инлайн требуют, хотя, как я получил тот образец достаточно несколько раз.
Действительно, тройной оператор сделал трюк. 'process.env.USE_MOCK? require ('./ mocks/something.js'). default: null' также работает и немного короче. Благодаря! – amann