使用grunt-load-config将Grunt-File拆分为多个部分:找不到任务

时间:2015-01-30 14:24:03

标签: javascript node.js configuration gruntjs task

我正在尝试使用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.

我在这里咬花岗岩。有些事情一定是错的,但我真的不知道是什么,所以任何提示都会受到赞赏。

2 个答案:

答案 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), .....}});

传递您要提供给每项任务的数据