Mat*_*ood 31 javascript node.js ecmascript-6 gulp
问题:如何在ES6中编写gulp文件,以便我可以使用import而不是require使用=>语法function()?
我可以使用io.js或节点任何版本.
gulpfile.js:
import gulp from "./node_modules/gulp/index.js";
gulp.task('hello-world', =>{
console.log('hello world');
});
Run Code Online (Sandbox Code Playgroud)

错误:
import gulp from "./node_modules/gulp/index.js";
^^^^^^
SyntaxError: Unexpected reserved word
Run Code Online (Sandbox Code Playgroud)
gulp.task('hello-world', =>{
^^
SyntaxError: Unexpected token =>
Run Code Online (Sandbox Code Playgroud)
里面的node_modules/gulp/bin/gulp.js我已经改变了第一线#!/usr/bin/env node --harmony的要求在这个堆栈
brb*_*ing 50
是的,你可以使用babel.
确保你有最新版本的gulp-cli.
npm install -g gulp-cli
安装babel作为项目的依赖项.
npm install --save-dev babel
重命名gulpfile.js为gulpfile.babel.js
你的gulpfile可能看起来像这样:
import gulp from 'gulp';
gulp.task('default', () => {
// do something
});
Run Code Online (Sandbox Code Playgroud)
更新Babel 6.0+ 正如Eric Bronniman正确指出的那样,还有一些额外的步骤可以让它与最新版本的babel一起使用.以下是这些说明:
再次,确保您已获得最新版本的gulp-cli
npm install -g gulp-cli
然后安装gulp,babel core和es2015预设
npm install --save-dev gulp babel-core babel-preset-es2015
然后,将以下内容添加到.babelrc文件或package.json中
"babel": {
"presets": [
"es2015"
]
}
Run Code Online (Sandbox Code Playgroud)
你gulpfile.js应该被命名gulpfile.babel.js
请注意,您现在可以在没有babel的Node.js v4.0.0中使用许多/大多数ES6功能.但显然"导入"仍然不受支持.请参阅:https://nodejs.org/en/docs/es6/
编辑:NodeJS 5.0默认支持大多数流行的ES6功能(包括解构和传播)(参见上面的链接.)据我所知,唯一缺少的主要功能似乎是ES6模块.
如果你有最新版本的 gulp & node,你可以简单地创建一个 gulpfile 作为gulpfile.mjs代替gulpfile.js,它应该可以工作,而不需要使用 Babel 或任何其他转译器。
.mjs是节点使用的特殊格式,允许使用 ES 模块。
参考 :-
例子 :-
// Filename: gulpfile.mjs
import gulp from 'gulp';
export default task;
function task()
{
return (
gulp.src(`./src/js/**/*.js`)
.pipe(gulp.dest(`./dist/Static/js`)
);
}
Run Code Online (Sandbox Code Playgroud)