скопировать задачу в Cakefile - PullRequest
0 голосов
/ 21 марта 2012

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

cp: cannot stat `tagbox/images/*': No such file or directory
cp: cannot stat `votebox/images/*': No such file or directory

Если я просто поставлю имя определенного файла вместо *, он будет работать.

вот мой Cakefile:

fs = require 'fs'

util = require 'util'
{spawn} = require 'child_process'

outputImageFolder = 'static'
imageSrcFolders = [
'tagbox/images/*'
'votebox/images/*'
]

task 'cpimgs', 'Copy all images from the respective images folders in tagbox, votebox, and omnipost into static folder', ->
  for imgSrcFolder in imageSrcFolders  
    cp = spawn 'cp', [imgSrcFolder, outputImageFolder]
    cp.stderr.on 'data', (data) ->
      process.stderr.write data.toString()
    cp.stdout.on 'data', (data) ->
      util.log data.toString()

1 Ответ

2 голосов
/ 21 марта 2012

Вы используете символ *, возможно потому, что он работает в вашей оболочке.Использование * и других подстановочных знаков, которые расширяются для соответствия нескольким путям, называется " globbing ", и хотя ваша оболочка делает это автоматически, большинство других программ, включая node / javascript / coffeescript, не будут делать это по умолчанию.Также, как вы обнаруживаете, бинарный файл cp сам по себе не выполняет сглаживание.Оболочка выполняет глобализацию, а затем передает список совпадающих файлов / каталогов в качестве аргументов cp.Загляните в модуль узла node-glob , чтобы выполнить глобализацию, и верните вам список подходящих файлов / каталогов, которые затем вы можете передать в cp в качестве аргументов, если хотите.Обратите внимание, что вы также можете использовать модуль файловой системы, в который встроены функциональные возможности этого типа. Однако обратите внимание, что поместить асинхронный код непосредственно в Cakefile может быть проблематично, так как задокументировано здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...