I am trying to use Grunt for the first time. I think that I'm properly following the directions to install and use Grunt with a plugin (grunt-text-replace). (See, for instance, Grunt's page and the plugin's.) But I can't successfully run anything -- instead, I keep getting the same error. I've been checking my code against the instructions from both Grunt and the plugin, but I can't see anything I did wrong.
Here is my package.json file:
{
  "name": "brink-prototype",
  "version": "0.0.0",
  "devDependencies": {
    "grunt": "~0.4.1",
    "grunt-contrib-jshint": "~0.1.1",
    "grunt-contrib-nodeunit": "~0.1.2",  
    "grunt-text-replace": "~0.3.2"
  }
}
And here is my Gruntfile.js:
module.exports = function(grunt) {
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    replace: {
      src: ['components/bootstrap/less/navbar.less'],
      dest: 'build/',
      replacements: [{
        from: /\.box-shadow.*$/g,
        to: ''
      }]
    }
  });
  grunt.loadNpmTasks('grunt-text-replace');
  grunt.registerTask('default', ['replace']);
};
When I run "grunt" in the command line, I get the following error:
Running "replace:src" (replace) task
Warning: No source files found Use --force to continue.    
Aborted due to warnings.
I also tried this process with another plugin (grunt-regex-replace) and had exactly the same error message.
Where have I gone wrong?
UPDATE:
Here are the relevant parts of the file structure:
I have been trying to run the command from the project/ directory, where the Gruntfile.js is.
Maybe the path in my src should be relative to something else? I don't know.
The grunt-text-replace plugin requires you to specify a subtask.
replace: {
  aSubtaskName: {
    src: ['components/bootstrap/less/navbar.less'],
    dest: 'build/',
    replacements: [{
      from: /\.box-shadow.*$/g,
      to: ''
    }]
  }
}