Skip to content

Instantly share code, notes, and snippets.

@pavel-voronin
Created April 16, 2015 15:30
Show Gist options
  • Save pavel-voronin/fcdbf970a2e7630eaa39 to your computer and use it in GitHub Desktop.
Save pavel-voronin/fcdbf970a2e7630eaa39 to your computer and use it in GitHub Desktop.
CS gulpfile.js v1
var gulp = require('gulp'),
concatCss = require('gulp-concat'),
minifyCSS = require('gulp-minify-css'),
addsrc = require('gulp-add-src'),
sass = require('gulp-sass'),
uglify = require('gulp-uglify'),
rename = require('gulp-rename'),
rev = require('gulp-rev'),
del = require('del'),
sourcemaps = require('gulp-sourcemaps'),
revDel = require('rev-del'),
merge = require('merge-stream'),
lazypipe = require('lazypipe'),
path = require('path'),
debug = require('gulp-debug'),
gutil = require('gulp-util'),
_ = require('underscore'),
install = require("gulp-install"),
mainBowerFiles = require('main-bower-files'),
concat = require('gulp-concat'),
runSequence = require('run-sequence'),
header = require('gulp-header'),
footer = require('gulp-footer'),
wrapper = require('gulp-wrapper'),
vinylPaths = require('vinyl-paths');
var bundleJS = lazypipe().
pipe(rename, {suffix: '.min'}).
pipe(sourcemaps.init).
pipe(uglify).
pipe(function () {
return rev();
}).
pipe(sourcemaps.write, '.').
pipe(gulp.dest, 'public').
pipe(function () {
return rev.manifest({
path: 'public/rev-manifest.json',
base: 'public',
merge: true
});
}).
pipe(function () {
return revDel({
dest: 'public',
delFn: function (patterns, opts, cb) {
_.each(patterns, function (value, key, context) {
context.push(value + '.map');
});
return del(patterns, opts, cb);
},
oldManifest: 'public/rev-manifest.json'
});
}).
pipe(gulp.dest, 'public');
var bundleCSS = lazypipe().
pipe(rename, {suffix: '.min'}).
pipe(sourcemaps.init).
pipe(minifyCSS, {keepSpecialComments: 0}).
pipe(function () {
return rev();
}).
pipe(sourcemaps.write, '.').
pipe(gulp.dest, 'public').
pipe(function () {
return rev.manifest({
path: 'public/rev-manifest.json',
base: 'public',
merge: true
});
}).
pipe(function () {
return revDel({
dest: 'public',
delFn: function (patterns, opts, cb) {
_.each(patterns, function (value, key, context) {
context.push(value + '.map');
});
return del(patterns, opts, cb);
},
oldManifest: 'public/rev-manifest.json'
});
}).
pipe(gulp.dest, 'public');
gulp.task('bower install', function () {
gulp.src(['bower.json'])
.pipe(install());
});
gulp.task('clean build folder', function(){
return gulp.src('runtime/build').
pipe(vinylPaths(del));
})
gulp.task('build vendors\' js', ['bower install'], function () {
return gulp.src(mainBowerFiles({filter: '**/*.js'})).
pipe(addsrc.append('resources/assets/js/selectbox/jquery.selectbox-0.2.js')).
pipe(wrapper({
header: '(function () {',
footer: '})();'
})).
pipe(concat('vendor.js')).
pipe(gulp.dest('runtime/build/js'));
});
gulp.task('build vendors\' css', ['bower install'], function () {
return gulp.src(mainBowerFiles({filter: '**/*.css'}))
.pipe(concat('vendor.css'))
.pipe(gulp.dest('runtime/build/css'));
});
gulp.task('build vendors\' assets', ['bower install'], function () {
return gulp.src(mainBowerFiles({filter: ['**/*.*', '!**/*.js', '!**/*.css']}))
.pipe(gulp.dest('runtime/build/assets'));
});
gulp.task('vendor', ['build vendors\' js', 'build vendors\' css', 'build vendors\' assets'], function () {
var js = gulp.src('runtime/build/js/vendor.js', {base: 'runtime/build'})
.pipe(bundleJS());
var css = gulp.src('runtime/build/css/vendor.css', {base: 'runtime/build'})
.pipe(bundleCSS());
var assets = gulp.src('runtime/build/assets/**/*.*').
pipe(gulp.dest('public/css'));
return merge(js, css);
});
gulp.task('move', function () {
return gulp.src([
'resources/assets/fonts/**',
'resources/assets/images/**',
'resources/assets/js/**',
'resources/assets/favicon*.*'
], {base: 'resources/assets'})
.pipe(gulp.dest('public'));
});
gulp.task('fullpage', function () {
return gulp.src('resources/assets/js/fullpage.js', {base: 'resources/assets'})
.pipe(bundleJS());
});
gulp.task('build app css', function () {
return gulp.src('resources/assets/sass/*.scss')
.pipe(sass())
.pipe(addsrc([
'resources/assets/js/selectbox/jquery.selectbox.css',
'resources/assets/css/ti.css',
'resources/assets/css/main.css',
'resources/assets/css/yii.css',
'resources/assets/css/new.css',
'resources/assets/css/fix.css',
'resources/assets/css/modal.css',
'resources/assets/js/jquery-ui/css/ui-lightness/jquery-ui-1.10.3.custom.css',
'resources/assets/css/attacher.css',
'resources/assets/css/user_profile.css'
]))
.pipe(concatCss("bundle.css"))
.pipe(addsrc([
'resources/assets/css/landing.css',
'resources/assets/css/fullpage.css',
'resources/assets/css/admin-attacher.css'
]))
.pipe(minifyCSS({keepSpecialComments: 0}))
.pipe(gulp.dest('runtime/build/css'));
});
gulp.task('css', ['build app css'], function () {
return gulp.src(['runtime/build/css/**.css', '!runtime/build/css/vendor.css'], {base: 'runtime/build'})
.pipe(bundleCSS());
});
gulp.task('default', function (cb) {
runSequence('clean build folder', 'vendor', 'move', 'css', 'fullpage', cb);
});
gulp.task('watch', function () {
return gulp.watch(['resources/assets/**', '!resources/assets/vendor'], ['move', 'css', 'fullpage']);
});
@pavel-voronin
Copy link
Author

Fail, do not use this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment