将Grunt放在子目录中

时间:2013-08-12 19:25:36

标签: javascript gruntjs

是否可以将Grunt配置文件放在项目的子目录中?我想这样做是为了让事情更有条理。

E.g。

  • 的myproject /咕噜/ Gruntfile.js

  • 的myproject /咕噜/的package.json

  • 的myproject /咕噜/ node_modules /

我在使用此配置下从Gruntfile.js运行命令时遇到问题。 Grunt可以处理查找父目录吗?或许我做错了

sass: {
    dev: {
       files: {
           "../style.css": "../scss/style.scss"
       }
    }
}

当我跑这个Grunt时,似乎只是耸耸肩,不明白我希望它在父目录中查看......

Source file "scss/style.scss" not found.

1 个答案:

答案 0 :(得分:27)

是的,这应该是可能的,但您可能希望使用grunt.file.setBase method--base命令行选项使任务正常工作,就像您将Gruntfile放在根目录中一样该项目。否则,您将遇到各种问题,默认情况下,这些任务不会写入工作目录之外的路径。例如,grunt-contrib-clean插件上的force option

以下是修改sample Gruntfile from the Getting Started page以使用此方法的示例:

module.exports = function(grunt) {

  // if you put the call to setBase here, then the package.json and
  // loadNpmTasks paths will be wrong!!!

  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    uglify: {
      options: {
        banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
      },
      build: {
        src: 'src/<%= pkg.name %>.js',
        dest: 'build/<%= pkg.name %>.min.js'
      }
    }
  });

  // Load the plugin that provides the "uglify" task.
  grunt.loadNpmTasks('grunt-contrib-uglify');

  // now that we've loaded the package.json and the node_modules we set the base path
  // for the actual execution of the tasks
  grunt.file.setBase('../')

  // Default task(s).
  grunt.registerTask('default', ['uglify']);

};

我不使用SASS,因此无法评论您的任务配置是否有任何问题,但上述内容可作为“入门”示例的修改。