我按照grunt.option页面上的说明为我的Gruntfile中的不同环境/目标(如开发,登台和生产)创建了不同的配置.但是,在这样做时,我发现我的任务无声地失败了.
我把问题简化为一个非常简单的例子.以下Gruntfile无法构建文件:
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
less: {
dev: {
options: {
compress: true
},
build: {
src: ['src/css/test.less'],
dest: 'build/css/test.css'
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-less');
grunt.registerTask('default', ['less:dev']);
};
Run Code Online (Sandbox Code Playgroud)
我的终端输出如下:
$ grunt
Running "less:dev" (less) task
Done, without errors.
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用以下Gruntfile,则构建输出符合预期:
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
less: {
options: {
compress: true
},
build: {
src: ['src/css/test.less'],
dest: 'build/css/test.css'
}
}
});
grunt.loadNpmTasks('grunt-contrib-less');
grunt.registerTask('default', ['less']);
};
Run Code Online (Sandbox Code Playgroud)
此Gruntfile的终端输出反映了构建的文件:
$ grunt
Running "less:build" (less) task
File build/css/test.css created.
Done, without errors.
Run Code Online (Sandbox Code Playgroud)
我在第一个Gruntfile中做错了什么?关于这个task:target惯例,我错过了什么?
您的第一个Gruntfile - 如果您需要每个目标选项,则需要指定该files对象.所以你的代码是这样的:
less: {
dev: {
files: {
"build/css/test.css": "src/css/test.less"
}
},
production: {
options: {
compress: true
},
files: {
"build/css/test.css": "src/css/test.less"
}
},
}
Run Code Online (Sandbox Code Playgroud)
基本上在你的第一个Gruntfile中build是一个未知的对象.您的目标已命名dev,grunt-contrib-less并且没有调用的选项,build因此Grunt不知道在何处编写文件.您的第二个Gruntfile有效,因为您将选项设置为全局.如果您需要每个目标选项,请使用上面的代码.
| 归档时间: |
|
| 查看次数: |
2902 次 |
| 最近记录: |