Как настроить существующий gulpfile под opencart?

Тема в разделе "Общие вопросы", создана пользователем Алексей_87, 24 авг 2017.

  1. Алексей_87

    Алексей_87 Новичок

    Сообщения:
    12
    Симпатии:
    0
    Здравствуйте! Прошу откликнуться и помочь в решении данного вопроса... Имеется gulpfile:
    PHP:
    var gulp = require('gulp');
    var 
    autoprefixer = require('gulp-autoprefixer');
    var 
    cleanCSS = require('gulp-clean-css');
    var 
    gcmq = require('gulp-group-css-media-queries');
    var 
    less = require('gulp-less');
    var 
    browserSync = require('browser-sync').create();
    var 
    rename = require('gulp-rename');

    var 
    config = {
        
    src'./src/',
        
    css: {
            
    watch'less/**/*.less',
            
    src'less/styles.less',
            
    dest'css'
        
    },
        
    php: {
            
    src'**/*.php'
        
    },
        
    html: {
            
    src'*.html'
        
    }
    };

    gulp.task('pack', function(){
        
    gulp.src(config.src config.css.dest '/**/*.css')
            .
    pipe(autoprefixer({
                
    browsers: ['> 0.01%'],
                
    cascadefalse
            
    }))
           .
    pipe(cleanCSS())
           .
    pipe(rename({suffix'.min'prefix ''}))
           .
    pipe(gulp.dest(config.src config.css.dest));
        
    });

    gulp.task('build', function(){
       
    gulp.src(config.src config.css.src)
           .
    pipe(less())
           .
    pipe(gcmq())
           .
    pipe(gulp.dest(config.src config.css.dest))
           .
    pipe(browserSync.reload({
                
    streamtrue
            
    }));
    });

    gulp.task('php', function(){
        
    gulp.src(config.src config.php.src)
            .
    pipe(browserSync.reload({
                
    streamtrue
            
    }));
    });

    gulp.task('watch', ['browserSync'], function(){
        
    gulp.watch(config.src config.css.watch, ['build']);
        
    gulp.watch(config.src config.php.src, ['php']);
        
    gulp.watch(config.src config.html.srcbrowserSync.reload);
    });

    gulp.task('browserSync', function(){
        
    browserSync.init({
            
    proxy""
        
    });
    });
    Думаю, что в config надо пути правильно прописать и расширения нужные добавить, за файлами которых нужно будет следить . в gulp watch прописать новые пути и в browserSync что-то подправить. Скажите, я правильно пишу?
    И куда положить в opencart папку src?
    str.png
     
    Последнее редактирование: 24 авг 2017
  2. Vlad

    Vlad Эксперт

    Сообщения:
    4.161
    Симпатии:
    1.012
    Наверно как то так
    Код:
    gulp.task('watch', ['browser-sync', 'css-libs', 'scripts'], function() {
      gulp.watch('app/**/*.scss', ['sass']);
      gulp.watch('app/js/**/*.js', browserSync.reload);
      gulp.watch('../catalog/view/theme/**/*.tpl', browserSync.reload);
      gulp.watch('../catalog/**/*.php', browserSync.reload);
    });
    А вообще посмотрите еще на плагин
    https://libraries.io/npm/gulp-opencart-refresh

    И на проект https://github.com/Skraylet/gulp_opencart
    Код:
    // Подключаем Gulp и все необходимые библиотеки
    var gulp           = require('gulp'),
            gutil          = require('gulp-util' ),
            sass           = require('gulp-sass'),
            browserSync    = require('browser-sync'),
            cleanCSS       = require('gulp-clean-css'),
            autoprefixer   = require('gulp-autoprefixer'),
            ftp            = require('vinyl-ftp'),
            concat         = require('gulp-concat'),
            uglify         = require('gulp-uglify'),
            rename         = require('gulp-rename'),
            del            = require('del'),
            cache          = require('gulp-cache'),
            notify         = require("gulp-notify");
    
    // Обновление страниц сайта на локальном сервере
    gulp.task('browser-sync', function() {
        browserSync({
            proxy: "opencart.loc",
            notify: false
        });
    });
    
    // Компиляция stylesheet.css
    gulp.task('sass', function() {
        return gulp.src('catalog/view/theme/apple/stylesheet/stylesheet.sass')
            .pipe(sass({outputStyle: 'expand'}).on("error", notify.onError()))
            .pipe(rename({suffix: '.min', prefix : ''}))
            .pipe(autoprefixer(['last 15 versions']))
            .pipe(cleanCSS())
            .pipe(gulp.dest('catalog/view/theme/apple/stylesheet/'))
            .pipe(browserSync.reload({stream: true}))
    });
    
    // Наблюдение за файлами
    gulp.task('watch', ['sass', 'browser-sync'], function() {
        gulp.watch('catalog/view/theme/apple/stylesheet/stylesheet.sass', ['sass']);
        gulp.watch('catalog/view/theme/apple/template/**/*.tpl', browserSync.reload);
        gulp.watch('catalog/view/theme/apple/js/**/*.js', browserSync.reload);
        gulp.watch('catalog/view/theme/apple/libs/**/*', browserSync.reload);
    });
    
    // Выгрузка изменений на хостинг
    gulp.task('deploy', function() {
        var conn = ftp.create({
            host:      'hostname.com',
            user:      'username',
            password:  'userpassword',
            parallel:  10,
            log: gutil.log
        });
        var globs = [
        'catalog/view/theme/apple/**'
        ];
        return gulp.src(globs, {buffer: false})
        .pipe(conn.dest('/path/to/folder/on/server'));
    });
    
    gulp.task('default', ['watch']);
     
  3. Алексей_87

    Алексей_87 Новичок

    Сообщения:
    12
    Симпатии:
    0
    Влад,спасибо что откликнулись и потратили время на написание мне кода, но в моём файле есть config. Там в нём достаточно прописать путь. Это удобно, не нужно везде менять пути... Помогите с конфигом... в CMS пока не разобрался...
    Что касается gulpfile, который вы мне дали... Я тоже его нашёл в сети, но я хочу изменить свой gulpfile и работать с ним. Мой, намного удобнее и компактнее. Там есть всё, что мне нужно!
     
  4. Алексей_87

    Алексей_87 Новичок

    Сообщения:
    12
    Симпатии:
    0
    Скажите пожалуйста, а как настроить папку домена в openserver для opencart?
    openserver.png
     
  5. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.570
    Симпатии:
    436
    Зачем вы это делаете?
     
  6. Алексей_87

    Алексей_87 Новичок

    Сообщения:
    12
    Симпатии:
    0
    для gulpfile
     
  7. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.570
    Симпатии:
    436
    для этого настраивать openServer не нужно.

    Не понятно чему вас научил Дмитрий со своим smartgrid'ом, лучше бы основам вас научил.
     
  8. Алексей_87

    Алексей_87 Новичок

    Сообщения:
    12
    Симпатии:
    0
    Для остальных проектов, он очень был даже нужен! Дмитрий не обучал opencart! Вот для чего он нужен:
    openserver2.png
     
  9. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.570
    Симпатии:
    436
    browserSynh - это для ленивых)

    Я вам сказал сделайте отдельную верстку в отдельной папке, а потом смотрите на документацию OpenCart на русском языке и правьте нужные вам файлы, так делать начинают более опытные веб мастера, про спецов я вообще не говорю.

    У вас должна быть отдельная верстка HTML, CSS, JS и отдельный шаблон для движка OpenCart - это все потом можно будет продать и если что у вас будет готовый код, который можно внедрять не только на OpenCart.

    Сейчас попробую сам настроить OpenCart с Gulp под версии.
     
    Алексей_87 нравится это.
  10. Алексей_87

    Алексей_87 Новичок

    Сообщения:
    12
    Симпатии:
    0
    Пожалуйста, попробуйте сделать что-то с моим gulpfile. Он рабочий, только пути в config нужно исправить для opencart
    PHP:
    var config = {
        
    src'./src/',
        
    dest'./src/',
        
    php: {
            
    src'**/*.php'
        
    },
        
    css: {
            
    dest'css'
        
    },
        
    less: {
            
    watch'precss/**/*.less',
            
    src'precss/styles.less'
        
    }
    };

    var 
    gulp = require('gulp');
    var 
    less = require('gulp-less');
    var 
    gcmq = require('gulp-group-css-media-queries');
    var 
    autoprefixer = require('gulp-autoprefixer');
    var 
    clean = require('gulp-clean-css');
    var 
    rename = require('gulp-rename');
    var 
    browserSync = require('browser-sync').create();

    gulp.task('build', function(){
        
    gulp.src(config.src config.css.dest '**/*.css')
            .
    pipe(autoprefixer({
                
    browsers: ['> 0.001%'],
                
    cascadefalse
            
    }))
            .
    pipe(clean())
            .
    pipe(rename({suffix'.min'prefix ''}))
            .
    pipe(gulp.dest(config.src));
    });

    gulp.task('less', function(){
        
    gulp.src(config.src config.less.src)
            .
    pipe(less())
            .
    pipe(gcmq())
            
    /*.pipe(autoprefixer({
                browsers: ['> 0.001%'],
                cascade: false
            }))
            .pipe(clean())*/
            
    .pipe(gulp.dest(config.src config.css.dest))
            .
    pipe(browserSync.reload({
                
    streamtrue
            
    }));
    });

    gulp.task('php', function(){
        
    gulp.src(config.src config.php.src)
            .
    pipe(browserSync.reload({
                
    streamtrue
            
    }));
    });

    gulp.task('browserSynh', function(){
        
    browserSync.init({
            
    proxy"rollerdrome"
        
    });
    });

    gulp.task('watch', ['browserSynh'], function(){
        
    gulp.watch(config.src config.less.watch, ['less']);
        
    gulp.watch(config.src config.php.src, ['php']);
    });
    Пути в gulpfile были настроены по этому шаблону:
    ee.png
     
    Последнее редактирование: 27 авг 2017
  11. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.570
    Симпатии:
    436
    @Алексей_87 вот собрал на быструю руку. сами подправите что до как, обычно у меня все по другому выглядит но вам для начала сойдет)
    proxy поменяйте на свою папку в domains/..
    Пути меняете на свои.

    PHP:
    'use strict';

    var 
    gulp = require('gulp'),
        
    prefixer = require('gulp-autoprefixer'),
        
    less = require('gulp-less'),
        
    cssmin = require('gulp-clean-css'),
        
    browserSync = require("browser-sync");

    gulp.task('style:build', function () {
        
    gulp.src('catalog/view/theme/default/stylesheet/less/*.less')
            .
    pipe(less())
            .
    pipe(prefixer())
            .
    pipe(cssmin())
            .
    pipe(gulp.dest('catalog/view/theme/default/stylesheet'))
            .
    pipe(browserSync.reload({
                
    streamtrue
            
    }));
    });

    gulp.task('browser-sync', function() {
        
    browserSync.init({
            
    proxy"opencart3",
            
    notifyfalse
        
    });
    });

    gulp.task('watch', function () {
        
    gulp.watch('**/*.php').on('change'browserSync.reload);
        
    gulp.watch('**/*.twig').on('change'browserSync.reload);
        
    gulp.watch('**/*.tpl').on('change'browserSync.reload);
        
    gulp.watch('catalog/view/theme/default/stylesheet/less/*.less', ['styles:build']);
    });

    // Команда gulp запускает сразу все разом.
    gulp.task('default', ['browser-sync''watch''style:build']);
     
    karpov и Алексей_87 нравится это.
  12. Алексей_87

    Алексей_87 Новичок

    Сообщения:
    12
    Симпатии:
    0
    Большое спасибо, что сделали для меня gulpfile!!! Я настроил всё так, как вы сказали и запустил команду gulp, но выходит пока то, что выходила в последний раз у меня:
    sn.png
    Мне кажется, что нужно как-то настроить папку доменов в openserver. У вас была похожая ситуация. И да, по поводу последнего вашего комментария. Я вас услышал, по поводу вёрстки. Сначала верстаю, потом переношу на opencart. Спасибо! Я так и сделаю!!!
     
  13. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.570
    Симпатии:
    436
    OpenServer трогать вообще не нужно, то что вы хотели настроить домены, вообще трогать не надо.
    А судя то что я вижу, то он у вас открывает catalog/view/theme/default

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