Здравствуйте.
Не подкините инструкции как настроить phpstorm и gulp на работу вместе?
Сейчас у меня настроена компилирование-"автопрефиксирование"-минификация CSS, сжатие и "спрайтировние" картинок, сжатие JS...
но дело в том, что phpstorm сохраняет файлы как-то незаметно для gulp, и все таски, на событие watch срабатывают только тогда, когда я открываю браузер или что-то еще, те когда фокус уходит из окна IDE, есть способ как это победить? (P.S привык уже не жмакать ctrl+s)
А еще не подскажите как настроить gulp-liverolad в связке с OpenServer?
В идеале 2 монитора (IDE + браузер)
изменения в IDE (монитор_1) сразу бы перезагружали страницу браузера (монитор_2)
Заранее благодарен за помощь.
вот мой типовой gulp
var gulp = require('gulp'),
watch = require('gulp-watch'),
postcss = require('gulp-postcss'),
autoprefixer = require('autoprefixer'),
sass = require('gulp-sass'),
sourcemaps = require('gulp-sourcemaps'),
cssnano = require('gulp-cssnano'),
uglify = require('gulp-uglify'),
rename = require('gulp-rename'),
svgstore = require('gulp-svgstore'),
svgmin = require('gulp-svgmin');
var path = {
build: { //Тут мы укажем куда складывать готовые после сборки файлы
js: '_js/',
css: '_css/',
img: '_img/',
},
src: { //Пути откуда брать исходники
js: ['_js/**/*.js', '!_js/**/*.min.js', '!_js/**/*-min.js'],//В стилях и скриптах нам понадобятся только main файлы
style: '_css/**/*.scss',
img: '_img/src/**/*.*', //Синтаксис img/**/*.* означает - взять все файлы всех расширений из папки и из вложенных каталогов
svg: ['_img/*.svg', '!_img/_img.svg'] //Синтаксис img/**/*.* означает - взять все файлы всех расширений из папки и из вложенных каталогов
},
watch: { //Тут мы укажем, за изменением каких файлов мы хотим наблюдать
js: ['_js/**/*.js', '!_js/**/*.min.js', '!_js/**/*-min.js'],
style: '_css/**/*.scss',
img: '_img/src/**/*.*',
svg: ['_img/*.svg', '!_img/_img.svg']
},
clean: './build'
};
gulp.task('js:build', function () {
gulp.src(path.src.js)
.pipe(sourcemaps.init()) //Инициализируем sourcemap
.pipe(uglify()).on("error", function () {
console.log('FUCK JS');
}) //Сожмем наш js
.pipe(rename(function (path) {
if (path.extname === '.js') {
path.basename += '.min';
}
}))
.pipe(sourcemaps.write()) //Пропишем карты
.pipe(gulp.dest(path.build.js)) //Выплюнем готовый файл в build
});
gulp.task('style:build', function () {
gulp.src(path.src.style) //Выберем наш main.scss
.pipe(sourcemaps.init()) //То же самое что и с js
.pipe(sass()).on("error", function () {
console.log('FUCK CSS');
}) //Скомпилируем
.pipe(postcss([autoprefixer({browsers: ['last 14 version']})]))
.pipe(cssnano({autoprefixer: false, convertValues: false, zindex: false})) //Сожмем
.pipe(sourcemaps.write())
.pipe(gulp.dest(path.build.css)) //И в build
});
gulp.task('svg:build', function () {
return gulp
.src(path.src.svg)
.pipe(svgmin(function (file) {
//var prefix = path.basename(file.relative, path.extname(file.relative));
return {
plugins: [{
cleanupIDs: {
prefix: '-',
minify: false
}
}]
}
}))
.pipe(svgstore())
.pipe(gulp.dest(path.build.img));
});
gulp.task('build', [
'js:build',
'style:build',
'svg:build'
]);
gulp.task('watch', function () {
watch([path.watch.style], function (event, cb) {
gulp.start('style:build');
});
watch(path.watch.js, function (event, cb) {/*тут уже в параметре массив*/
gulp.start('js:build');
});
watch(path.watch.svg, function (event, cb) {/*тут уже в параметре массив*/
gulp.start('svg:build');
});
});
gulp.task('default', ['build', 'watch']);