2014-02-03 3 views
0

Я изучаю хрюканье и пытаюсь сделать то, что, как я думал, будет простым: скопируйте текстовый файл.простой грунт-копия .txt файл становится пустым

copy: { 
    main: { 
     src: 'app/text.txt', 
     dest: 'build/copied.txt' 
    } 
} 

ошибок не производится при запуске и файл «копируется», но build/copied.txt содержит один период символа, а не содержимое файла app/text.txt.

Зачем это делать?

Followup Редактировать

  1. Во-первых, у меня был установлен grunt-copy не grunt-contrib-copy модуль. Это работает по-разному и имеет некоторые варианты пунктуации, которые, я считаю, там, откуда таинственный период.
  2. 2nd + facepalm: У меня была опечатка, app/test.txt должно было быть text. Это не было очевидно никому в этом QA, поскольку я не опубликовал список файлов. Но ...
  3. Используйте тег --verbose для отладки, поскольку он показал отсутствие src, что привело меня к обнаружению глупой опечатки.

Вышеуказанный код делает произведение!

ответ

0

Хм, я предполагаю, что вы используете (черновую-вно-копию), я отлажена вопрос и, кажется, что копирование (один файл .txt по имени) не работает он работает на .js и многие другие файлы? но вы можете получить копию файла .txt, чтобы работать так, если у вас снова возникли проблемы с разрешениями, есть опция mode.

copy: { 
    main: { 
    flatten: true, 
    src: ["app/*.txt"], 
    dest: "build/", 
    expand: true, 
    rename: function (dest, src) { 
     // rename test.txt to copied.txt 
     if (src === "test.txt") { 
     return dest + "copied.txt"; 
     } 
     return dest + src; 
    } 
    } 
} 

Однако я хотел бы сделать такого рода вещи без переименования, то очевидно, что build папка содержит скопированный файл, поэтому я предпочитаю копировать их, как они:

copy: { 
    main: { 
    flatten: true, 
    src: ["app/*.txt"], 
    dest: "build/", 
    expand: true 
    } 
} 

Обратите внимание, что из-за одного файла соответствует src: ["app/test.txt"] (для.формат TXT) doens't работы и если у вас есть проблемы, то копирование слишком много текстовых файлов, вы можете поместить его в другой папке самостоятельно и использовать его как это:

copy: { 
    single: { 
    flatten: true, 
    src: ["app/single/*.txt"], 
    dest: "build/", 
    expand: true 
    }, 
    other: { 
    /* ... */ 
    } 
} 

и задачи:

grunt.registerTask("testCopy", ["copy:single"]); 

и запустить его:

grunt testCopy 
+0

Ahh, так что это странность. Удивительно: все 3 примера работают. Один вопрос: почему вы ставите квадратные скобки вокруг src? Благодаря! – gmonkey

+0

oops, в основном потому, что его привычка моя :), я использовал для копирования нескольких файлов, таких как: src: ["app/trash/*. Js", "app/another/*. Md"] с этим случаем возможно, просто опустите их, если хотите. –

0

По умолчанию задача copy копирует, а не переименовывает. Таким образом, вы делаете создание каталога с именем copied.txt в каталоге build. Чтобы переименовать файл в копии, вам необходимо использовать опцию rename. Это не является особенностью задачи copy, а скорее общей функцией опции file, которую он использует (и многие другие задачи используют этот общий вариант). Вы можете увидеть documentation on the Grunt site для этого, просто найдите «переименовать» на этой странице.

copy: { 
    main: { 
     src: 'app/text.txt', 
     dest: 'build/', 
     rename: function(dest, src, options) { 
      return path.join(dest, "copied.txt"); 
     } 
    } 
} 
+0

K это помогает, зная, что переименование обрабатывается отдельно, но если я удалить «copied.txt» (в попытке просто скопировать text.txt построить /) или попробовать код, который вы отправили, я получаю сообщение об ошибке 'Warning: Unab le написать файл «build /» (код ошибки: EISDIR). Используйте -force для продолжения .'. – gmonkey

+0

У вас есть права на запись в этот каталог? Не знаю, что еще может быть ... – jakerella

+0

Хм хорошо, что он смог написать файл с помощью. в нем и других задачах работают нормально. Я также пробовал chmod 777 по сборке и сборке/* и по-прежнему той же ошибке. Это также работает: ' раа: { вставит: правда, Развертка: правда, SRC: 'приложение/*', Dest: 'строить/все /' } ' как отдельная цель для копирования. – gmonkey

Смежные вопросы