可以在es6中写一个gulp文件吗?

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.jsgulpfile.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 6.x中,ES6功能是可选择的.请参阅:https://github.com/gulpjs/gulp/issues/1375.快速解决方案是安装es2015预设:"npm install --save-dev babel-preset-es2015",并将一个babel配置块添加到package.json.例如"babel":{"presets":["es2015"]} (4认同)

tho*_*nic 6

请注意,您现在可以在没有babel的Node.js v4.0.0中使用许多/大多数ES6功能.但显然"导入"仍然不受支持.请参阅:https://nodejs.org/en/docs/es6/

编辑:NodeJS 5.0默认支持大多数流行的ES6功能(包括解构和传播)(参见上面的链接.)据我所知,唯一缺少的主要功能似乎是ES6模块.


Par*_*olt 5

如果你有最新版本的 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)