Cas*_*aJS 1 javascript gruntjs ecmascript-6 babeljs grunt-babel
我试图用grunt-babel将我的es6编译成es5.当我进入grunt babel命令行时,它会挂起并且永远不会运行babel.它不会返回错误或崩溃它只是挂起.我在Gruntfile.js中有其他任务,它们运行得很好,因此Gruntfile.js的结构是正确的.
这是我的Gruntfile:
'use strict';
module.exports = function(grunt) {
require('load-grunt-tasks')(grunt);
// initialize Grunt
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
'babel': {
options: {
sourceMap: true,
presets: ['babel-preset-es2015']
},
dist: {
files: {
'js/survey.js': 'build/survey.js'
}
}
},
// create jshint task
jshint: {
dev: {
// tell jshint what check
src: ['Gruntfile.js', 'server.js', 'js/**/*.js', 'models/**/*.js', 'routes/**/*.js', '!build/**', '!tests/client/bundle.js', '!tests/karma_tests/bundle.js', '!js/imageMapResizer.min.js', '!js/kickstart.js', '!js/form-validator.js', '!js/imageMapResizer.js', '!js/jquery-ui.min.js', '!js/jquery.base64.js', '!js/kickstart.js'],
options: {
node: true,
globals: {
describe: true,
it: true,
before: true,
after: true,
beforeEach: true,
afterEach: true,
res: true
}
}
},
mocha: {
// tell mocha where test files are
src: ['tests/test_entry.js', '!tests/client/bundle.js', '!tests/karma_tests/bundle.js'],
options: {
node: true,
globals: {
describe: true,
it: true,
before: true,
after: true,
beforeEach: true,
afterEach: true,
res: true,
expect: true
}
}
},
jasmine: {
src: ['<%= jshint.dev.src %>', '<%= jshint.mocha.src %>'],
options: {
node: true,
jasmine: true,
globals: {
describe: true,
it: true,
before: true,
after: true,
beforeEach: true,
afterEach: true,
expect: true,
react: true
}
}
},
// create jscs task
jscs: {
dev: {
// tell jscs to test the same files as jshint
src: ['<%= jshint.dev.src %>', '<%= jshint.mocha.src %>']
}
}
},
mocha: {
// tell mocha where the test file is
src: ['tests/test_entry.js'],
options: {
node: true,
globals: {
describe: true,
it: true,
before: true,
after: true,
beforeEach: true,
afterEach: true,
res: true,
expect: true
}
}
},
// create simplemocha task
simplemocha: {
dev: {
src: ['tests/test_entry.js']
}
}
});
// register linting task
grunt.registerTask('lint', ['jshint:dev', 'jshint:mocha', 'jshint:jasmine']);
// register mocha test task
grunt.registerTask('test', ['simplemocha:dev']);
grunt.registerTask('babel', ['babel']);
grunt.registerTask('default', ['test']);
};Run Code Online (Sandbox Code Playgroud)
这是我的package.json:
{
"name": "event_site_bootstrap",
"version": "0.1.0",
"description": "",
"main": "server.js",
"scripts": {
"test": "mocha tests/test_entry.js",
"start": "node server.js"
},
"author": "",
"license": "MS-PL",
"dependencies": {
"bcrypt-nodejs": "latest",
"body-parser": "^1.15.0",
"cookie-parser": "^1.4.1",
"dotenv": "^1.2.0",
"eat": "^0.1.1",
"express": "^4.13.4",
"flash": "^1.1.0",
"jquery": "^2.2.1",
"multer": "^1.1.0",
"passport": "^0.3.2",
"passport-http": "^0.3.0",
"sequelize": "^3.19.3",
"sequelize-encrypted": "^0.1.0",
"tedious": "^1.13.2"
},
"devDependencies": {
"babel-cli": "^6.7.5",
"babel-core": "^6.7.6",
"babel-polyfill": "^6.7.4",
"babel-preset-es2015": "^6.6.0",
"babylon": "^6.7.0",
"chai": "^3.2.0",
"chai-http": "^1.0.0",
"cli-color": "^1.1.0",
"colors": "^1.1.2",
"expect": "^1.9.0",
"grunt": "^0.4.5",
"grunt-babel": "^6.0.0",
"grunt-cli": "^0.1.13",
"grunt-contrib-jshint": "^0.11.3",
"grunt-jscs": "^2.1.0",
"grunt-mocha-cli": "^2.0.0",
"grunt-simple-mocha": "^0.4.0",
"load-grunt-tasks": "^3.5.0",
"mocha": "^2.3.4"
}
}Run Code Online (Sandbox Code Playgroud)
而.babelrc看起来像这样:
{
"presets": ["es2015"]
}Run Code Online (Sandbox Code Playgroud)
我从昨天开始就试图解决这个问题,但没有错误信息,很难知道问题是什么.我使用babel作为字符串,但我也试过没有引号,它的行为完全一样.我也试过添加下面presets: ['babel-preset-es2015']的选项,'babel'但它没有改变任何东西.
任何帮助将不胜感激,如果您需要更多信息或想要查看其他文件,请告诉我.在此先感谢您的帮助!
找到了!删除该行
grunt.registerTask('babel', ['babel']);
Run Code Online (Sandbox Code Playgroud)
它会导致无限循环.您已经有一个名为的任务babel,因此该行只是使用无限任务重新定义它.
你也可能想'js/survey.js': 'build/survey.js'成为'build/survey.js': 'js/survey.js'.格式是target: source