PankovAlxndr
@PankovAlxndr
Fullstack web developer

Как настроить gulp с phpstorm и OpenServer?

Здравствуйте.

Не подкините инструкции как настроить 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']);
  • Вопрос задан
  • 1943 просмотра
Пригласить эксперта
Ответы на вопрос 1
mikaspell
@mikaspell
Frontender
для нормального слежения за файлами используйте не стандартный метод watch, а плагин gulp-watch, для лайврелоада используйте gulp-browserify
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы