Ответ 1
Я создал пример проекта с деревом следующим образом:
.
├── Gruntfile.js
├── package.json
└── src
└── js
└── foo.js
Использование ниже Gruntfile:
module.exports = function(grunt) {
require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
grunt.initConfig({
copy : {
foo : {
files : [
{
expand : true,
dest : 'dist',
cwd : 'src',
src : [
'**/*.js'
]
}
]
}
}
});
grunt.registerTask('build', function(target) {
grunt.task.run('copy');
});
};
Это дало мне эту структуру:
.
├── Gruntfile.js
├── dist
│ └── js
│ └── foo.js
├── package.json
└── src
└── js
└── foo.js
Когда я изменил cwd
так, чтобы Gruntfile читал:
module.exports = function(grunt) {
require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
grunt.initConfig({
copy : {
foo : {
files : [
{
expand : true,
dest : 'dist',
cwd : 'src/js',
src : [
'**/*.js'
]
}
]
}
}
});
grunt.registerTask('build', function(target) {
grunt.task.run('copy');
});
};
Я получил эту структуру:
.
├── Gruntfile.js
├── dist
│ └── foo.js
├── package.json
└── src
└── js
└── foo.js
Итак, кажется, что cwd
делает то, что вам нужно. Может быть, вы оставили src
при src/js/bower_components/*
при установке cwd
на src/js/bower_components
? В этом случае src
должен читать что-то вроде **/*.js
, но в зависимости от того, что вам действительно нужно.