javascript - webpack & ES6 - 有条件的导入和导出

标签 javascript webpack ecmascript-6

我有一些配置键,如下所示:

/config
  /db
    /dev.js
    /index.js
    /prod.js

我像这样导入 key :
import dbConfig from './config/db'

但是在 index.js ,我使用 CommonJS 语法有条件地导出模块。 ES6可以做到吗?如果是,如何?
module.exports = process.env.NODE_ENV === 'production'
  ? require('./prod')
  : require('./dev');

我正在使用 webpack ^4.6.0 .用 babel-plugin-dynamic-import-webpack 试试我的运气但它没有用。

我可能不知道我可以使用的一些最佳实践或插件,所以我很感激你的想法。

最佳答案

我不相信你真的需要担心这个。现代构建系统中有 trim 树的算法,可以确保您最终在开发或生产中只得到一个版本。

# mockValue.js
const mockValue = 'mock';

export default mockValue;

# realValue.js
const realValue = 'real';

export default realValue;

# test.js
import mockValue from 'mockValue';
import realValue from 'realValue';

let test;
if (process.env.NODE_ENV === 'production') {
  test = realValue;
} else {
  test = mockValue;
}

export default test;

# index.js
import test from 'test';

console.log(test);
在开发过程中,realValue 应该被 trim 。在生产构建期间,mockValue 应该被 trim 。为了验证这一点,您可以构建上面的测试项目并检查“mock”的输出(但您不太可能找到它)。

关于javascript - webpack & ES6 - 有条件的导入和导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49920363/

相关文章:

javascript - 如何用正则表达式替换特定的 JavaScript 注释?

javascript - 递归对象数组以创建自定义类对象

javascript - 动态将表数据转换为树数据JSON格式(父,子)d3.js?

reactjs - 如何在创建 react 应用程序中构建 bundle-stats.json?

javascript - 在 JavaScript 中,有没有一种方法可以以编程方式允许浏览器在无限循环内接收用户事件?

javascript - 使用 D3 和 d3.slider 显示 SVG 元素 : Uncaught ReferenceError: svg is not defined

javascript - Vue.js - 需要在不重新加载的情况下切换方向(rtl 到 ltr,反之亦然)

reactjs - 在 React 中将函数传递给 setState() 有什么好处?

javascript - es6模块加载是如何工作的

javascript - 当我使用 webpack 构建时,/assets 文件夹中的所有图像都消失了