javascript - 从 webpack 中剥离动态需求

标签 javascript node.js webpack uglifyjs

我有一个类似的代码:

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

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

我希望 Webpack 在构建过程中通过 UglifyJS 的死代码消除来删除这些动态需求,但我注意到它们仍然存在,因此 something.js 将位于构建的包中。

就我而言,输出类似于:

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

有什么方法可以从 bundle 中完全删除该导入吗?

顺便说一句。我认为这样的方法有效:

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

不过,我更喜欢内联 require,因为我已经多次遇到过这种模式。

最佳答案

尝试这样的事情:

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

或者单独构建模块导出:

let module_export;
module_export.something = true;

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

export module_export;

关于javascript - 从 webpack 中剥离动态需求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40593455/

相关文章:

javascript - 投资组合悬停效果不适用于 iphone 和 ipad

javascript - Jquery 的函数式 javascript 示例,函数式 js 的大师

javascript - 如何在 Mustache 模板中使用 jQuery 内置函数

reactjs - 从 create-react-app 发出构建文件

node.js - 如何修复 "@types/node/index.d.ts is not a module"?

node.js - 如何将 Webpack 与 ReactJS 和 NodeJS 一起使用?

javascript - 在同一 Controller Angular js中使用多个服务

node.js - 如何在 tfs 构建日志控制台中获取带有颜色的 npm 测试输出

javascript - 如何通过映射普通id构造html列表

javascript - Webpack 2.3.3 - 类型错误 : $export is not a function