Grunt переименовать не работает

Моя структура каталогов выглядит так:

-src/
-----pages/
----------...
-----...
-build

Мой gruntfile содержит следующую задачу:

copy: {
    all:{
        dest:"<%= builddir %>/",
        src: ["src/**/*.{yaml,yml,py,html,htm,json,css}"],
        rename:function(d, s){return d.replace("src/","");}
    }
},
builddir: "build/<%= pkg.name %>-<%= pkg.version %>-<%= date %>",

Когда я запускаю задачу копирования, она копирует все выбранные файлы в каталог, содержащий имя пакета, версию и дату сборки, как и ожидалось, но копирует весь каталог src. в то время как я хочу скопировать только содержимое каталога src, поэтому я пытаюсь удалить свойство src/' from dest using therename`, которое по какой-то причине не работает.

Я только сегодня начал использовать grunt, так что, возможно, я совершаю здесь ошибку новичка.


person bigblind    schedule 30.12.2013    source источник


Ответы (2)


Хм... Я думаю, все, что вам нужно, это опция cwd (текущий рабочий каталог). Если вы на самом деле не хотите сводить файлы в один каталог.

copy: {
    all:{
        expand: true,
        dest:"<%= builddir %>/",
        src: ["**/*.{yaml,yml,py,html,htm,json,css}"],
        cwd: "src/"
    }
}
person Jordan Kasper    schedule 30.12.2013

Вам нужно установить параметр flatten, который удаляет структуру каталогов.

copy: {
    all:{
        expand: true,
        flatten: true,
        dest:"<%= builddir %>/",
        src: ["src/**/*.{yaml,yml,py,html,htm,json,css}"]
    }
}
person Ben    schedule 30.12.2013
comment
Если я запускаю это, я получаю сообщение об ошибке: Warning: Unable to write "build/dev2013-0.1.0-2013-12-30T23:53:51.708Z/" file (Error code: ENOENT). - person bigblind; 31.12.2013