Webpack es2015 用 React 摇树

Posted

技术标签:

【中文标题】Webpack es2015 用 React 摇树【英文标题】:Webpack es2015 tree shaking with React 【发布时间】:2016-12-28 11:30:00 【问题描述】:

我想使用摇树功能似乎我们不需要安装babel-preset-es2015-webpack。我们仍然可以使用 babel-preset-es2015 并将模块标志设置为 false 以用于 es2015 预设。我更改了我的 webpack 配置,如下所示,这导致我的反应组件中的导入行出现“意外的令牌导入”错误。

  module: 
    loaders: [
      
        test: /\.js$/,
        exclude: /node_modules/,
        loader: 'babel',
        query: 
          presets: [['es2015', modules: false], 'react']
        
      ,
      
        test: /\.scss$/,
        loader: ExtractTextPlugin.extract("style-loader", "css-loader!sass-loader")
      
    ]
  

我也尝试将预设设置为

['es2015', 'react', modules: false]

然后我在控制台上得到了不同的错误:

 Module build failed: ReferenceError: [BABEL] C:\FE-Proj-Templates\webpack\main.js: Using removed Babel 5 option: foreign.modules - Use the corresponding module transform plugin in the `plugins` option. Check out http://babeljs.io/docs/plugins/#modules 

如何将预设 es2015 设置为模块标志为 false 并使用 React 预设?

【问题讨论】:

您使用的是 webpack 2(测试版)吗? Webpack 1 不支持 ES2015 模块(和摇树)。 是的,我正在使用 webpack 2 @NeginBasiri 你找到解决方案了吗? @GuilhermeMattarBastos 还没有。我也评论了egghead.io/forums/lesson-discussion/topics/…(不确定你是否能看到讨论)。当我得到它的工作时,我会更新这张票。 【参考方案1】:

它已更新并有效

presets: [['es2015', modules: false], 'react']

【讨论】:

请注意['es2015', modules: false] 在一个单独的数组中。一开始我忽略了它。 您可以通过添加loose: true 来进一步优化它,就像这样presets: [['es2015', loose: true, modules: false], 'react']

以上是关于Webpack es2015 用 React 摇树的主要内容,如果未能解决你的问题,请参考以下文章

为啥 webpack 在使用“import * as _”时不会对 lodash 进行摇树?

摇树创建反应应用程序?

webpack+es2015+react+Ant Design纲领

如何用原生的react,webpack,es6来使用蚂蚁金服的ant design组件库

将 webpack 与 babel 和 babel-preset-react 和 babel-preset-es2015 一起使用

在 React 和 Webpack 项目上从“babel-preset-es2015”过渡到“babel-preset-env”时出现问题