为什么我需要的库没有从ES6转换到ES5
Why are my required libs not being converted from ES6 to ES5?
我正在编写一个react
应用程序,其中我在另一个使用ES6
语法的库中require
。这是我使用lib:的代码
var React = require('react');
var Calendar = require('horario-calendar');
var appts = [];
React.render(<Calendar />, document.getElementById('calendar'));
horario-calendar
是第三方应用程序,它充满了ES6
语法。我有一个gulp
任务,应该是transpile
到ES6
的所有代码。任务如下:
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));
});
};
但require
d不是transpile
ing by code,它只是transpile
ing my code。我在horario-calendar
中仍然有ES6
样式的导入。我还需要对transpile
那个代码做什么?
我建议使用webpack而不是Browserify-您将额外享受JSX热加载器的好处。https://github.com/babel/6to5-loader开箱即用,对我来说完美无瑕,尽管我确实更换了这个:
{ test: /'.js$/, exclude: /node_modules/, loader: '6to5-loader'}
在他们的例子中,对这个:
{ test: /'.jsx$/, exclude: /node_modules/, loader: '6to5-loader'}
由于我碰巧只在.jsx文件中使用箭头函数,所以请注意这一点。
理想情况下,这个负担将由第三方库承担,但如果这不是一个选项,您可以尝试使用全局转换:
如果opts.global为true,则转换将对所有文件进行操作,不管它们是否存在于node_modules/目录中的某个级别。由于大多数情况下,谨慎而谨慎地使用全局转换一个普通的变换就足够了。您也不能配置全局在package.json中进行转换,就像使用普通转换一样。
全局变换总是在任何普通变换运行之后运行。
因此用.transform({ global: true }, to5)
代替.transform(to5)
。
此外,6to5(现在的Babel)有内置的JSX支持,所以您不需要Reactivity。
- 如何将es6导入转换为AMD需要
- 有没有办法将包含 es6 的字符串转换为 es5
- 使用 Babel 将 ES6 模块转换为 ES5 AMD 模块,无法按预期工作
- 如何将普通对象转换为ES6映射
- 为什么我需要的库没有从ES6转换到ES5
- 将 ES6 可迭代转换为数组
- React js getInitialState 在转换为 es6 后不起作用
- 将 jQuery 插件转换为 es6 模块
- 使用 babel 将 es6 转换为 es5,然后与 Browserify 捆绑
- ES6中的JavaScript作用域已转换
- 正在转换为ES6语法
- Array.prototype.values()未定义-使用Babel在NodeJS环境中转换ES6
- 将Singleton JS对象转换为使用ES6类
- 无法在JavaScript ES6中将对象强制转换为类
- 将封口转换为es6模块
- 将ReactClass转换为ReactComponent ES6
- 默认情况下,BabelJS不会't可转换ES6语法的匿名函数
- 将带有符号的ES6类转换为JSON
- Babel不会将ES6转换为浏览器可以理解的JavaScript
- 将 es6 转换为 es5