Ric*_*ard 9 javascript babel gruntjs ecmascript-6
我想开始使用ES6,我想使用grunt来管理我的文件.到目前为止,这是我的项目结构:
Gruntfile.js
package.json
dist/
src/
index.es6
Run Code Online (Sandbox Code Playgroud)
这是index.es6看起来像:
import MapGL from 'react-map-gl';
const data = [];
const viewport = new Viewport();
Run Code Online (Sandbox Code Playgroud)
这些包都已定义package.json并安装.
如何将此ES6文件转换为ES5 JavaScript?是的,我能够把它变成一种类型的JavaScript,但它根本不会改变require语句.
这是我目前的Gruntfile:
module.exports = function(grunt) {
require('load-grunt-tasks')(grunt);
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concat: {
options: {
separator: ';'
},
dist: {
src: ['src/**/*.js'],
dest: 'dist/<%= pkg.name %>.js'
}
},
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n'
},
dist: {
files: {
'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>']
}
}
},
jshint: {
files: ['src/index.js', 'test/index.js'],
options: {
reporterOutput: '',
esnext: true,
globals: {
console: true,
module: true,
document: true
}
}
},
babel: {
files: {
expand: true,
src: ['src/*.es6'],
ext: '-compiled.js'
},
options: {
sourceMap: true,
presets: ['babel-preset-es2015']
}
},
watch: {
files: ['<%= jshint.files %>'],
tasks: ['babel', 'jshint', 'concat']
}
});
grunt.registerTask('default', ['babel', 'jshint', 'concat', 'uglify']);
};
Run Code Online (Sandbox Code Playgroud)
运行grunt生成以下文件:
Gruntfile.js
package.json
dist/
myproject.js
src/
index.es6
index-compiled.js
index-compiled.map
Run Code Online (Sandbox Code Playgroud)
但是myproject.js包含var _reactMapGl = require('react-map-gl');在浏览器中失败的行.
Rob*_*obC 24
是的,根据@Matthew Herbst的建议,Browserify将处理importES6模块的绑定.另外一个名为babelify的软件包将有助于处理您的babel浏览器转换.
以下似乎运作良好:
babel-cli而不是babel.值得注意的是Babel已经被babel-cli取代为babel 6 (有关更多信息,请参阅他们的博客).所以,首先,从你的package.json(如果它存在!)中删除/卸载它:
$ npm uninstall babel --save-dev
...并卸载grunt-babel:
$ npm uninstall grunt-babel --save-dev
安装babel-cli并包括所有es2015插件的babel预设:
$ npm install --save-dev babel-cli babel-preset-es2015
接下来,创建一个.babelrc文件并将其保存在包含以下代码的项目根目录中:
{
"presets": ["es2015"]
}
Run Code Online (Sandbox Code Playgroud)
grunt-browserify接下来,安装grunt-browserify并将其保存到package.json:
$ npm install grunt-browserify --save-dev
babelify安装babelify来处理你的babel browserify转换:
$ npm install babelify --save-dev
Gruntfile.jsGruntfile.js通过删除现有babel任务来更新您: // DELETE the following...
babel: {
files: {
expand: true,
src: ['src/*.es6'],
ext: '-compiled.js'
},
options: {
sourceMap: true,
presets: ['babel-preset-es2015']
}
},
Run Code Online (Sandbox Code Playgroud)
browserify任务: browserify: {
dist: {
files: {
// destination for transpiled js : source js
'dist/myproject.js': 'src/index.es6'
},
options: {
transform: [['babelify', { presets: "es2015" }]],
browserifyOptions: {
debug: true
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
grunt.registerTask.对此:grunt.registerTask('default', [
'jshint',
//'concat', <-- Probably don't need to concat the files, assuming index.es6 imports the necessary modules.
'browserify:dist',
'uglify'
]);
Run Code Online (Sandbox Code Playgroud)
有可能是在使用一些好处反应预置除了ES2015预置 -这将需要修改点2,3,和7的上方相应地,然而,我没有用它自己.
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
14698 次 |
| 最近记录: |