异步等待不会在 Grunt 中编译
Async await doesn't get compiled in Grunt
我正在尝试使用 Grunt 任务运行程序将我的 ES6+ 代码编译为 vanilla js。
我特意选择了 Grunt 而不是 webpack 和 gulp 因为我只是想缩小我的 js 文件。
在 运行 代码收到错误提示未定义 generatorRuntime 后,我已成功将我的 ES6 代码编译为 vanilla。在分析了这个问题之后,我认为我的异步和等待代码在转换为 vanilla js 后出现了问题。
我有 gruntfile.js 和 package.json 的代码片段。
babel: {
options: {
sourceMap: true
},
dist: {
files: [{
"expand": true,
"cwd": "./htdocs/js/src",
"src": ["**/*.js"],
"dest": "./htdocs/js/compiled/",
"ext": ".js"
}]
}
},
//uglify will minify all the js files in js/src folder.
uglify: {
all_src : {
options : {
sourceMap : true
},
files: [{
expand: true,
flatten: true,
cwd:'./htdocs/js/compiled',
src: '**/*.js',
dest: './htdocs/js/dist',
ext: '.min.js'
}]
}
}
grunt.loadNpmTasks('grunt-babel');
grunt.loadNpmTasks('grunt-contrib-uglify');
Package.json
"devDependencies": {
"babel-core": "^6.26.3",
"babel-preset-latest": "^6.24.1",
"grunt": "^1.1.0",
"grunt-babel": "^7.0.0",
"grunt-cli": "^1.3.2",
"grunt-contrib-uglify": "^4.0.1"
},
"babel": {
"presets": [
"latest"
]
}
这可能是因为 polyfill 没有包含在您的包中。在 Gruntfile 中的 babel.options
对象中,您可以设置
presets: [['@babel/preset-env', { useBuiltIns: 'usage', corejs: 3 }]]
并且不要忘记将 corejs 作为依赖项包含在您的项目中。
npm install core-js --save
我正在尝试使用 Grunt 任务运行程序将我的 ES6+ 代码编译为 vanilla js。 我特意选择了 Grunt 而不是 webpack 和 gulp 因为我只是想缩小我的 js 文件。
在 运行 代码收到错误提示未定义 generatorRuntime 后,我已成功将我的 ES6 代码编译为 vanilla。在分析了这个问题之后,我认为我的异步和等待代码在转换为 vanilla js 后出现了问题。
我有 gruntfile.js 和 package.json 的代码片段。
babel: {
options: {
sourceMap: true
},
dist: {
files: [{
"expand": true,
"cwd": "./htdocs/js/src",
"src": ["**/*.js"],
"dest": "./htdocs/js/compiled/",
"ext": ".js"
}]
}
},
//uglify will minify all the js files in js/src folder.
uglify: {
all_src : {
options : {
sourceMap : true
},
files: [{
expand: true,
flatten: true,
cwd:'./htdocs/js/compiled',
src: '**/*.js',
dest: './htdocs/js/dist',
ext: '.min.js'
}]
}
}
grunt.loadNpmTasks('grunt-babel');
grunt.loadNpmTasks('grunt-contrib-uglify');
Package.json
"devDependencies": {
"babel-core": "^6.26.3",
"babel-preset-latest": "^6.24.1",
"grunt": "^1.1.0",
"grunt-babel": "^7.0.0",
"grunt-cli": "^1.3.2",
"grunt-contrib-uglify": "^4.0.1"
},
"babel": {
"presets": [
"latest"
]
}
这可能是因为 polyfill 没有包含在您的包中。在 Gruntfile 中的 babel.options
对象中,您可以设置
presets: [['@babel/preset-env', { useBuiltIns: 'usage', corejs: 3 }]]
并且不要忘记将 corejs 作为依赖项包含在您的项目中。
npm install core-js --save