Gulp и Drupal
Сначала установите и настройте Gulp.
Установите в Drupal модуль browsersync:
drush en browsersync -y
Откройте в админке Drupal admin/appearance/settings/ВАША_ТЕМА и в секциии «Browsersync settings» настройте:
- [✓] Enable Browsersync
- Host: ВАШ_ДОМЕН
- Port: 3000
Установите плагин gulp-shell:
sudo npm install gulp-shell --save-dev
В gulpfile.js добавьте задачу, которая будет очищать кэш Drupal.
Затем эту задачу можно вызывать из других задач, например, при перегенерации Sass в CSS.
// Clear all caches
gulp.task('clearcache', function() {
return shell.task(['drush cc all']);
});
Из-за того, что в папке node_modules, в которой Gulp сохраняет файлы плагинов проекта, встречаются файлы .info, Drush воспринимает их как файлы модулей Drupal, находит в них несоответствие синтаксиса и выдает ошибку 'segmentation fault'.
Чтобы это исправить, просто будем автоматически удалять все файлы .info в папке node_modules.
Откройте файл package.json, перейдите к секции "scripts": и замените строку:
"test": "echo \"Error: no test specified\" && exit 1"
на следующую:
"postinstall": "find node_modules/ -name '*.info' -type f -delete"
Создайте в папке темы (там же, где находится файл package.json) файл .npmrc и добавьте в него строку:
unsafe-perm = true
Также папку папку node_modules можно очищать от файлов .info с помощью скрипта npm_post.sh:
#!/bin/sh
find -L ./node_modules -type f -name "*.info" -print0 | while IFS= read -r -d '' FNAME; do
mv -- "$FNAME" "${FNAME%.info}.inf0"
done
Этот скрипт нужно запускать после добавления в Gulp новых плагинов с помощью команды npm install.
См. также: How do I prevent Drupal raising a segmentation fault when using a Node.js theming workflow?
Выполните команду:
npm install
Эту команду нужно запускать, когда в файл package.json добавляются новые плагины.
Папка node_modules с плагинами может быть довольно большого размера — десятки мегабайт, поэтому ее нужно исключать при использовании git и во время создания резервных копий.
Чтобы исключить папку node_modules из git, нужно создать файл .gitignore, в который добавить строку:
node_modules/
Чтобы исключить папку node_modules из архива при создании резервной копии, нужно использовать параметр exclude:
--tar-options="--exclude=%themes/*/node_modules"
Соответственно, если проект будет клонироваться из git или восстанавливаться из резервной копии, будет необходимо запускать команду npm install, чтобы были снова установлены все компоненты Gulp.