2014-11-18 5 views
0

В настоящее время статические ресурсы, которые мы используем, являются частью веб-проекта в Visual Studio. В проекте есть определенные файлы, которые мы хотим локально, мы не хотим, чтобы их развертывали на производство. Мы справляемся с этим с помощью файла .csproj и видим, что файл отмечен как «контент» или «нет» и т. Д. (Если он помечен как «none», он не разрывается на развертывание).Использование GruntJS для фильтрации развернутых файлов

Это прекрасно работает, однако мы продвигаем наше развитие из Visual Studio и в более дружественную к Javascript среду IDE. Однако, если мы добавляем или удаляем файлы, нам все равно нужно вернуться в Visual Studio и обновить файл .csproj, чтобы гарантировать, что производство не перестанет синхронизироваться и что сборка не сломается.

Это заставило меня задуматься о том, как мы реализуем Node/Grunt, если есть подключаемый модуль, который обрабатывает одну и ту же вещь - подход типа «белый список/черный список», на который сервер может смотреть и решать, какие файлы подобрать и какие из них уйти.

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

+0

Эй вы нашли то, что ищете? Я пытаюсь решить что-то подобное, и я не могу согласиться с тем, что это сложно назвать фразой, а поиск - даже вызов, а также – scniro

+0

@salniro - Извините, я не нашел то, что искал. Я все еще ищу хороший ответ, хотя я приложил щедрость к этому вопросу, и, надеюсь, это привлечет некоторое внимание и даст нам хороший ответ. – Johannes

+0

Удивительный! Сегодня я задал очень похожий вопрос, так что у нас тоже есть шанс. Не точный, но штопать близко. Проверьте это, если у вас есть время. Есть комментарий, который ссылается на плагин, который может оказаться удобным. Не нашли времени, чтобы изучить его полностью, но на первый взгляд это может быть то, что мы ищем. Вот библиотека, которая была прокомментирована на моем конце [grunt-usemin] (https://github.com/yeoman/grunt-usemin) – scniro

ответ

4

Grunt поставляется со встроенным file filters. Вы можете фильтровать все, это очень мощно. Я не могу предложить конкретное решение, не видя ваши задачи ворчанием, но вот пример различных шаблонов исключения с grunt-copy задачи:

copy: { 
    dist: { 
    files: [{ 
     expand: true, 
     dot: true, 
     dest: 'dist', 
     src: [ 
     '*.{ico,png,txt}', 
     'bower_components/**/*', 
     'assets/images/{,*/}*.{webp}', 
     'assets/fonts/**/*', 
     'index.html', 
     '!*.something', // exclude all files with the extension .something 
     '!.tmp/**/*'  // exclude all files recursively under .tmp directory 
     ] 
    }] 
} 

Grunt использует node-glob, так что вы можете изучить документацию там, чтобы узнать о разные шаблоны.

Я также упомянул, что есть плагины для выполнения замены строк в любом файле (например, grunt-replace). С чем-то подобным вы можете автоматически изменить свой файл .csproj, чтобы добавлять/удалять файлы на основе ваших фильтров Grunt (или наоборот).

Пожалуйста, извините анекдот, но, как бывший разработчик .NET, я полагался на Visual Studio, чтобы обрабатывать все для меня, меня изначально испугала сложность и явная слабость процессов Node.js. Мое послание вам не запугало, как только я успокоился, я понял, что я контролирую все аспекты процесса сборки и больше не нахожусь во власти VS. Это был самый освобождающий момент моей карьеры, и я не оглядывался назад.

+0

Ницца! Спасибо Терри. Поэтому, если я правильно это понимаю, вы можете использовать эти шаблоны для соответствия файлам. Я еще не прочитал все, но как он возвращает список совпадающих файлов? Куда идет этот список? Является ли он в массиве или записывается в файл или настраивается? – Johannes

+1

Используя пример «grunt-copy» Терри, файлы, включенные/исключенные в свойстве 'src', копируются в целевой каталог (свойство' dest') 'dist'. Затем процесс сборки будет принимать файлы, находящиеся в 'dist', и развертывать их на вашем сервере. –

+0

@Johannes, вы должны прочитать больше о задачах Grunt в целом и о том, как они работают. Есть общие черты между всеми из них, которые являются фундаментальными для Grunt. Или, если вы похожи на меня и предпочитаете учиться на этом, настройте Gruntfile с помощью простой задачи, такой как копирование и воспроизведение с параметрами, чтобы увидеть, что происходит. – Terry

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

  • Нет связанных вопросов^_^