这是我的grunt文件:
'use strict';
var path = require('path');
module.exports = function (grunt) {
require('load-grunt-tasks')(grunt);
require('time-grunt')(grunt);
console.log(path.basename());
grunt.initConfig({
yeoman: {
app: require('./bower.json').appPath || 'app',
build: 'dist',
name: require('./bower.json').name
},
html2js: {
options: {
module: '<%= yeoman.name %>-templates',
base: 'app'
},
main: {
src: ['<%= yeoman.app %>/**/*.tpl.html'],
dest: '<%= yeoman.build %>/templates.js'
}
},
sass: {
dist: {
src: '<%= yeoman.build %>/<%= yeoman.name %>.scss',
dest: '<%= yeoman.build %>/<%= yeoman.name %>.css'
}
},
imageEmbed: {
dist: {
files: [{
expand: true,
cwd: '<%= yeoman.app %>/styles/',
src: ['*.{scss,css}'],
dest: '.tmp/'
}]
}
},
cssmin: {
dist: {
src: '<%= yeoman.build %>/<%= yeoman.name %>.css',
dest: '<%= yeoman.build %>/<%= yeoman.name %>.min.css'
}
},
concat: {
css: {
src: ['.tmp/**/*.scss', '.tmp/**/*.css'],
dest: '<%= yeoman.build %>/<%= yeoman.name %>.scss'
},
js: {
src: ['<%= yeoman.build %>/templates.js', '<%= yeoman.app %>/scripts/app.js', '<%= yeoman.app %>/scripts/**/*.js'],
dest: '<%= yeoman.build %>/<%= yeoman.name %>.js'
}
},
uglify: {
complete: {
src: '<%= yeoman.build %>/<%= yeoman.name %>.js',
dest: '<%= yeoman.build %>/<%= yeoman.name %>.min.js'
}
},
karma: {
options: {
configFile: 'karma.conf.js'
},
unit: {
singleRun: true
}
}
});
grunt.registerTask('build', [
'html2js',
'imageEmbed',
'concat:css',
'sass',
'cssmin'
'concat:js',
'uglify',
]);
grunt.registerTask('test', [
'karma:unit'
]);
};
运行grunt build
时,我得到以下错误:
运行"sass:dist" (sass)任务
运行"cssmin:dist" (cssmin)任务
目标未写入,因为minified CSS为空。
当我分别运行每个任务时,没有错误。我认为上一个任务在下一个任务开始之前还没有完成。有人知道为什么会这样吗?
谢谢。
这可能是由于sass任务是异步运行的,我遇到过类似的肝脏负载问题。
尝试这样做,并在两个任务之间注册:
grunt.registerTask('wait', function () {
grunt.log.ok('Waiting for server reload...');
var done = this.async();
setTimeout(function () {
grunt.log.writeln('Done waiting!');
done();
}, 1500);
});
http://gruntjs.com/api/inside-tasks