我是Grunt的新手所以也许这是一个简单的问题,但我真的很茫然......
我想在" package.json"中声明我的所有文件。而在grunt里面只是导入它们。 像这样:
// package.json
{
"config": {
"files": {
"css": ["../assets/css/main.scss", "../assets/css/plugins.scss"]
}
},
"dependencies": {
"grunt": "~0.4.5",
"grunt-contrib-sass": "~0.8.1"
}
}
// grunt.js
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
sass: {
dev: {
options: { style: 'compressed', noCache: true },
files: { '../assets/min/min.css': '<%= pkg.config.files.css %>' }
}
}
});
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.registerTask('default', ['sass:dev']);
};
我说源文件是空的。但是,如果我只声明一个文件就可以了。
如果我直接在&#34; grunt.js&#34;工程...
// grunt.js
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
sass: {
dev: {
options: { style: 'compressed', noCache: true },
files: { '../assets/min/min.css': ["../assets/css/main.scss", "../assets/css/plugins.scss"] }
}
}
});
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.registerTask('default', ['sass:dev']);
};
有人可以告诉我如何使第一个工作吗?
谢谢:)
答案 0 :(得分:0)
问题是,通过将pkg.config.files.css
粘贴到模板中,它可能会对其进行字符串化。尝试直接传递变量:
// Wrong
'<%= pkg.config.files.css %>'
// Right
pkg.config.files.css
这样,Grunt就会按照您的预期传入数组。
编辑:
如果这不起作用,here's an alternative way to access package.json.虽然以上是有效的JS,但它可能对Grunt无效,因为如果grunt.file.readJSON
异步运行,它将是undefined
直到它完成了,这将是在grunt已经初始化配置对象之后。因此,grunt返回并在数据可用时插入数据。