在这里向Grunt完成新手,但基本上我正在尝试使用Grunt做一些事情。缩小JS文件,并将多个LESS文件编译成一个CSS文件。
javascript位工作,即我的文件custom.js压缩到一个名为custom.min.js的文件,但是LESS位根本不起作用(没有错误,只是没有编译)。谁能明白这是为什么?
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
uglify: {
build: {
src: 'scripts/custom.js',
dest: 'scripts/custom.min.js'
}
},
less: {
build: {
src: 'less/*.less',
dest: 'style.css'
}
},
watch: {
files: ['scripts/custom.js'],
tasks: ['uglify','less']
}
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-less');
// Default task(s).
grunt.registerTask('default', ['uglify']);
};
答案 0 :(得分:2)
您根本不会调用LESS任务。要调用它,请在已注册的任务中添加任务名称
grunt.registerTask('default', ['uglify','less']);
请参阅文档以了解有关任务注册的更多信息:http://gruntjs.com/creating-tasks
编辑:
我看到你创建了一个watch
任务,所以如果你不是手动调用LESS任务而是通过观察文件,请务必在终端中执行grunt watch
(而不是关闭终端) Windows)在修改文件之前
答案 1 :(得分:1)
你应该在watch语句中包含对less任务的调用,例如:
watch: {
livereload: {
options: { livereload: true },
files: ["public/css/main.css", "public/css/less/*.less", "public/html/*.html", "public/js/*.js"]
},
scripts: {
files: ["public/js/*.js"],
tasks: ["jshint"]
},
less: {
files: ["public/css/*.less", "public/css/less/*.less"],
tasks: ["less", "csslint"],
options: {
nospawn: true
}
}
},
less: {
development: {
options: {
compress: true,
yuicompress: false,
optimization: 2,
cleancss:false,
paths: ["css"],
syncImport: false,
strictUnits:false,
strictMath: true,
strictImports: true,
ieCompat: false
},
files: {
"public/css/main.css": "public/css/main.less"
}
}
}
然后还只需使用watch注册默认任务:
grunt.registerTask("default", ["express", "open:dev", "watch"]);
答案 2 :(得分:0)
将所有较少的文件移动到一个文件中,如下所示:
Somefile.less:
@import '../bootstrap/bootstrap.less';
@import 'site.less';
尝试以下方法:
less: {
build: {
files: {
'style.css': 'less/somefile.less'
}
}
}