我正在尝试使用load-grunt-config将相当大的Grunt文件拆分成几个较小的部分。我在项目的根目录中有一个Gruntfile.js,在一个名为grunt的目录中有子任务。
这是我的Gruntfile.js:
module.exports = function(grunt) {
require('load-grunt-config')(grunt, {
loadGruntTasks: {
pattern: '*',
config: require('./bower.json'),
scope: 'devDependencies'
}
});
};
这就是我的grunt / copy.js文件:
module.exports = function (grunt) {
return {
main: {
files: [{
cwd: 'init/php/templates',
src: '<%= init.php.templates %>',
dest: 'src/php/templates',
expand: true
}],
options: {
process: function (content, srcpath) {
return grunt.template.process(content);
}
}
}
}
};
然而,无论我尝试什么(包括将copy.js文件重命名为grunt-copy.js),Grunt总是抱怨它无法找到我的任务。我收到此错误消息:
Warning: Task "copy:main" not found. Use --force to continue.
我在这里咬花岗岩。有些事情一定是错的,但我真的不知道是什么,所以任何提示都会受到赞赏。
答案 0 :(得分:0)
对于那些感兴趣的人。以下是我解决Bower.json问题的方法。我现在正在使用grunt-bower-task包,这非常好。
这是我的Gruntfile.js
module.exports = function(grunt) {
require('load-grunt-config')(grunt);
};
grunt / bower.js上的install.js
module.exports = {
install: {
options: {
targetDir: "./assets/dev/",
layout: "byType",
install: true,
verbose: false,
cleanBowerDir: false,
cleanTargetDir: true,
bowerOptions: {}
}
}
}
和我的bower.json
{
"name": "myProject",
"version": "1.0.0",
"dependencies": {
"bootstrap": "latest",
"fontawesome": "latest"
},
"exportsOverride": {
"bootstrap": {
"vendor/js": "**/*.min.js",
"vendor/css": "**/bootstrap.min.css"
},
"jquery": {
"vendor/js": "**/jQuery.min.js"
},
"fontawesome": {
"vendor/css": "**/*.min.css",
"vendor/css/fonts": "**/fontawesome-webfont.*"
}
}
}
这会自动将所有文件排序到dev / assets /文件夹中的vendor / css和vendor / js文件夹中,并且只从我指定的bower.packages中获取这些文件。这确实有助于保持整个设置的美观和干净!
答案 1 :(得分:0)
我认为您需要删除Gruntfile.js中的grunt.initConfig()。
并使用require('load-grunt-config')(grunt, {data: {pkg: grunt.file.readJSON(./package.json), .....}});