2016-08-30 343 views
3

我有一个项目只有几个月的时间,我决定在ES6中编写它来学习新系统。 (我喜欢很多)。该项目是一个复杂的WebGL渲染器。使用webpack而无需将es6转换为es5代码

起初我只是用ES6在浏览器(不使用模块功能),并简单地使用大量的import语句在我的HTML(丑陋的)。随着班级数量的增长,这变得难以管理。

现在我第一次学习webpack和babel。我的目标是将所有模块以es5或es6格式进行组合。

我已经使用webpack将我的代码转换为单个es5(CommonJS)模块。所有功能保持不变。好极了!

但是,在某些情况下,性能显着降低。我的一些代码现在已经以一半的速度运行,现在已经转换为es5。 (这与我在本页看到的数据不符https://kpdecker.github.io/six-speed/)。

我想测试使用Webpack而不改变es6 - > es5。基本上只是利用webpacks将我的模块捆绑到一个文件中的能力。

我完全新的WebPack,我一直在试图与方式巴贝尔的混乱转换我的代码,但无法弄清楚如何简单禁用大部分变换。我想转换的唯一东西是模块导入/导出。

任何人都可以帮我解决这个问题吗?

P.S.我认为我的项目指出es6在某些真实世界的用例中比es5快得多,并且有助于证明我决定从一开始就使用es6。

回答

0

我猜你使用babel-loader?只需删除babel装载机上.js文件在您的WebPack配置:

module: { 
    loaders: [ 
    // Remove this: 
    { 
     test: /\.js$/, 
     exclude: /(node_modules|bower_components)/, 
     loader: 'babel', 
     query: { 
     presets: ['es2015'] 
     } 
    } 
    ] 
} 
+0

我想简单地移除通天装载机,但后来我得到以下错误:在./src/Sapphire.js 'ERROR 模块解析失败:d:\项目\ MatterMachine \ SapphireClient \ node_modules \ eslint-装载机\ index.js d:\项目\ MatterMachine \ SapphireClient的\ src \蓝宝石。js第3行:意外的代币 您可能需要一个合适的加载程序来处理此文件类型.' 对不起,我应该在我的问题中包含该代码。 –

0

如果你只是想给你js文件捆绑为一个那么你并不需要使用的WebPack。 Webpack更多,感染你使用webpack,如果你想编译,模块加载,代码分割和更多。为了在不做任何这些步骤的情况下进行简化,您可以使用简单的工具,如吞咽。如果你仍然想要使用webpack,那么就不要编译你的js文件,不要使用任何加载器。

4

而不是使用一个“预置”设置插件(如“ES2015”)只是由本身使用transform-es2015-modules-commonjs插件。

下面是一个例子的WebPack配置,但你也可以做到这一点在.babelrc

// webpack.config.js 
{ 
    module: { 
    loaders: [ 
     { 
     test: /\.js$/i, 
     loader: 'babel', 
     query: { 
      plugins: ["transform-es2015-modules-commonjs"] 
     } 
     } 
    ] 
    } 
} 

,将改变import语句转换为require报表和export语句转换为module.exports = value语句......它不会做其他东西。您可以根据需要添加其他转换,其他所有转换将作为创作传递。

+0

谢谢你。我非常分心,但这正是我需要的! –