#git #deployment #gulp
#git #развертывание #gulp
Вопрос:
Я только что закончил скрипт Gulp для оптимизации моих проектов WordPress. Вот моя структура темы :
ROOT
- /dev/ (файлы для работы)
- /bower.json (список пакетов bower)
- /gulpfile.js (все мои задачи gulp, такие как minify, concat, …)
- /package.json (список пакетов узлов)
- /node_modules/ (пакеты gulp)
- /bower_components/ (передние пакеты, используемые в моей теме)
Моя gulp build
команда создает каталог /dist/, содержащий тему «готов к работе».
Я отслеживаю только каталог / dev/ и gulpfile.js , файлы package.json с помощью GitLab. Моя цель заключается в следующем :
Для каждого
push origin master
из них я хочу развернуть каталог «/ dist /» на моем рабочем сервере в «/ wp-content / themes / theme-name /».
Есть идеи? Я борюсь с этим: (
Ответ №1:
Вероятно, вам нужен git-хук
Перехват предварительного нажатия выполняется во время git push, после обновления удаленных ссылок, но до передачи каких-либо объектов. Он получает имя и местоположение удаленного в качестве параметров, а также список обновляемых ссылок через стандартный интерфейс. Вы можете использовать его для проверки набора обновлений ссылок перед отправкой (ненулевой код выхода прервет отправку).
Итак, все, что вам нужно сделать, это создать git-хук, который запускает отправку на ваш удаленный сервер в виде команды bash
Комментарии:
1. Я уже использую git-перехваты, но это было только для «копирования / вставки» моего репозитория git на сервер. Я не понимаю, как я могу достичь своей цели?
2. Или, может быть, путем сборки, удаления других файлов и т. Д… с помощью CLI?
3. Добавьте в свою среду разработки перехват перед запуском, который загружает вашу папку dist в указанную папку на вашем сервере
Ответ №2:
Мы не можем возиться и тестировать без доступа к вашему серверу, поэтому все, что я могу сказать, это «Я бы попробовал …», но если у вас настроен FTP, я бы попробовал vinyl-ftp
.
Этот пример взят прямо из vinyl-ftp
документации (0.5.0, 2016-06-18), просто чтобы сделать этот ответ немного более полным. Вам нужно будет настроить переменные globs
и base
и conn
целевые объекты. (Вы также можете удалить log
параметр)
var gutil = require( 'gulp-util' );
var ftp = require( 'vinyl-ftp' );
gulp.task( 'deploy', function () {
var conn = ftp.create( {
host: 'mywebsite.tld',
user: 'me',
password: 'mypass',
parallel: 10,
log: gutil.log
} );
var globs = [
'src/**',
'css/**',
'js/**',
'fonts/**',
'index.html'
];
// using base = '.' will transfer everything to /public_html correctly
// turn off buffering in gulp.src for best performance
return gulp.src( globs, { base: '.', buffer: false } )
.pipe( conn.newer( '/public_html' ) ) // only upload newer files
.pipe( conn.dest( '/public_html' ) );
} );