2016-11-23 4 views
0

Я пытаюсь запустить gulp для каждой страницы отдельно. Каждой страницы имеет свой файл глоток, и вы можете проглатывать для страницы только с $ глотка --file = имя Этих gulpfiles хранятся в/глотке Так мой главный gulpfile.js имеет следующий:Elixir gulp versioning - разрешить rev-manifest.js слияния вместо ovewrites

require('./gulp/elixir-extensions'); 
var args = require("yargs"); 
var file = args.argv.file; 

if(file){ 
    var path = './gulp/'+file; 
    require('./gulp/'+file); 
} 
else{ 
    console.log('Pass the file: gulp --file:name'); 
} 

Таким образом, в my/gulp directory У меня есть расширения gulpfile для каждой страницы моего сайта. home.js, about.js, contact.js, login.js и т.д ..

Как правило - home.js

var elixir = require('laravel-elixir'); 

elixir(function(mix) { 
    mix 

    /** 
    * Combine home scripts 
    */ 
    .scripts(...) 

    /** 
    * Combine home CSS files 
    */ 
    .styles(...) 

    /** 
    * Remove unused css selectors 
    */ 
    .uncss(...) 

    /** 
    * Remove redundant/repeated css declarations 
    */ 
    .purge(...) 

    /** 
    * Apply version control 
    */ 
    .version([ 
     "public/css/home.css", 
     "public/js/home.js", 
    ]); 

}); 

и мой глоток/эликсира-extensions.js:

const gulp = require('gulp'); 
const Elixir = require('laravel-elixir'); 
const Task = Elixir.Task; 
const uncss = require('gulp-uncss'); 
const purge = require('gulp-css-purge'); 
const rename = require('gulp-rename'); 

Elixir.extend('uncss', function(file, link, out, renamed) { 

    new Task('uncss', function() { 
     return gulp.src(file) 
     .pipe(uncss({ 
      html: [link] 
     })) 
     .pipe(rename(renamed)) 
     .pipe(gulp.dest(out)); 
    }); 

}); 

Elixir.extend('purge', function(css, out, renamed) { 

    new Task('purge', function() { 
     return gulp.src(css) 
     .pipe(purge()) 
     .pipe(rename(renamed)) 
     .pipe(gulp.dest(out)); 
    }); 

}); 

Моя проблема в том, что public/build/rev-manifest.js получает огласку каждый раз, когда я глотаю одну страницу.

Rev-manifest.js после $ глотка --file = дом

{ 
    "css/home.css": "css/home-0a3d3926fc.css", 
    "js/home.js": "js/home-6df29810e8.js" 
} 

Rev-manifest.js после $ глотка --file = о

{ 
    "css/about.css": "css/about-fc0a5d3926.css", 
    "js/about.js": "js/about-f0921ds0e8.js" 
} 

Как я могу объединить каждый пересмотр следующим образом?

{ 
    "css/home.css": "css/home-0a3d3926fc.css", 
    "js/home.js": "js/home-6df29810e8.js", 
    "css/about.css": "css/about-fc0a5d3926.css", 
    "js/about.js": "js/about-f0921ds0e8.js" 
} 
+0

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

ответ

0

Разобрался решение - сделать все управление версиями в основном gulpfile.js. Таким образом, каждая страница получает свои активы только версиями (но не скомпилированными) каждый раз.

require('./gulp/elixir-extensions'); 

var elixir = require('laravel-elixir'); 
var args = require("yargs"); 
var file = args.argv.file; 

if(file){ 

    var filepath = './gulp/'+file; 

    require('./gulp/'+file); 

    elixir(function(mix) { 
     mix 
     /** 
     * Apply version control to all assets 
     */ 
     .version([ 
      "public/css/auth.css", 
      "public/css/backend.css", 
      "public/js/backend.js", 
      "public/css/home.css", 
      "public/js/home.js", 
      "public/css/about.css", 
      "public/js/about.js", 
     ]) 
     // .phpUnit() 
     // .compressHtml() 
    }); 
} 
else{ 
    console.log('Pass the file: gulp --file:name'); 
}