首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我所需的库不能从ES6转换为ES5?

为什么我所需的库不能从ES6转换为ES5?
EN

Stack Overflow用户
提问于 2015-02-15 00:40:05
回答 2查看 323关注 0票数 1

我正在写一个react应用程序,我在另一个使用ES6语法的库中使用require。下面是我使用lib的代码:

代码语言:javascript
运行
复制
var React = require('react');
var Calendar = require('horario-calendar');

var appts = [];

React.render(<Calendar />, document.getElementById('calendar'));

horario-calendar是第三方应用,它充满了ES6语法。我有一个gulp任务,它应该transpile所有的代码到ES6。以下是任务:

代码语言:javascript
运行
复制
var browserify = require('browserify');
var reactify = require('reactify');
var source = require('vinyl-source-stream')
var to5 = require('6to5ify');

module.exports = function(gulp, config) {
    gulp.task('browserify', function() {
        browserify(config.app.src, {debug: true})
            .transform(to5)
            .transform(reactify)
            .bundle()
            .pipe(source(config.app.bundleName))
            .pipe(gulp.dest(config.app.bundle));
    });
};

但它不是required in中的transpile by code。它只是在我的代码中使用transpile。我仍然可以在horario-calendar中导入所有的ES6样式。我还需要做什么来transpile这些代码呢?

EN

回答 2

Stack Overflow用户

发布于 2015-02-15 20:07:53

我会推荐使用webpack而不是Browserify --你还会享受到JSX热加载程序的好处。https://github.com/babel/6to5-loader为我提供了完美的开箱即用功能,不过我确实替换了这个:

代码语言:javascript
运行
复制
{ test: /\.js$/, exclude: /node_modules/, loader: '6to5-loader'}

在他们的示例中,如下所示:

代码语言:javascript
运行
复制
{ test: /\.jsx$/, exclude: /node_modules/, loader: '6to5-loader'}

因为我碰巧只在.jsx文件中使用箭头函数,所以请注意这一点。

票数 0
EN

Stack Overflow用户

发布于 2015-02-16 01:50:44

理想情况下,此负担将由第三方库承担,但如果不能这样做,则可以尝试使用global transforms

如果opts.global为true,则转换将在所有文件上操作,而不管它们是否存在于节点_模块/目录中的上一级。谨慎地使用全局变换,因为大多数时候一个普通的变换就足够了。您也不能像使用普通转换那样在package.json中配置全局转换。

全局转换始终在任何普通转换运行之后运行。

所以用.transform({ global: true }, to5)替换.transform(to5)

此外,6to5 (现在的Babel)有内置的JSX支持,所以你不需要Reactify。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28517749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档