Veikedo

gulpfile

Feb 15th, 2016
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var gulp = require("gulp"),
  2.     uglify = require("gulp-uglify"),
  3.     sass = require("gulp-sass"),
  4.     concat = require("gulp-concat"),
  5.     del = require("del"),
  6.     rename = require("gulp-rename"),
  7.     runSequence = require("run-sequence"),
  8.     sourcemaps = require('gulp-sourcemaps'),
  9.     postcss = require("gulp-postcss"),
  10.     autoprefixer = require("autoprefixer"),
  11.     mqpacker = require('css-mqpacker'),
  12.     csswring = require('csswring'),
  13.     cssSimple = require('postcss-csssimple'),
  14.     jade = require('gulp-jade');
  15.  
  16. require("es6-promise").polyfill();
  17.  
  18. function onError(error) {
  19.     process.stderr.write(error + '\n');
  20. }
  21.  
  22. const paths = (function () {
  23.     const webrootBase = "wwwroot";
  24.     const devrootBase = "client";
  25.  
  26.     return {
  27.         webroot: {
  28.             base: webrootBase,
  29.             vendor: webrootBase + "/vendor",
  30.             app: webrootBase + "/app"
  31.         },
  32.         devroot: {
  33.             base: devrootBase,
  34.             app: devrootBase + "/app",
  35.             static: devrootBase + "/**/*.{html,css,js,jpg,png,bmp,svg,eot,svg,ttf,woff,woff2,otf}",
  36.             ts: devrootBase + "/**/*.ts",
  37.             js: devrootBase + "/**/*.js",
  38.             appJs: devrootBase + "/app/**/*.js",
  39.             scss: devrootBase + "/**/*.scss",
  40.             jade: [devrootBase + "/**/*.jade"],
  41.             vendor: devrootBase + "/vendor"
  42.         },
  43.         node: "node_modules"
  44.     };
  45. })();
  46.  
  47. gulp.task("watch-dev", function (cb) {
  48.     gulp.task('jade', function () {
  49.         gulp.src(paths.devroot.jade)
  50.             .pipe(jade({pretty: true}).on('error', onError))
  51.             .pipe(gulp.dest(paths.webroot.base))
  52.     });
  53.  
  54.     gulp.task("static", function () {
  55.         gulp.src(paths.devroot.static)
  56.             .pipe(gulp.dest(paths.webroot.base));
  57.     });
  58.  
  59.     gulp.task('styles', function () {
  60.         var processors = [
  61.             autoprefixer({browsers: ['last 5 versions']}),
  62.             mqpacker,
  63.             cssSimple,
  64.             csswring({preserveHacks: true})
  65.         ];
  66.  
  67.         return gulp
  68.             .src(paths.devroot.scss)
  69.             .pipe(sourcemaps.init())
  70.  
  71.             .pipe(sass().on('error', sass.logError))
  72.             .pipe(postcss(processors).on('error', onError))
  73.  
  74.             .pipe(sourcemaps.write("./"))
  75.             .pipe(gulp.dest(paths.webroot.base));
  76.     });
  77.  
  78.     gulp.task("js-min", function () {
  79.         return gulp
  80.             .src(paths.devroot.appJs)
  81.             .pipe(sourcemaps.init())
  82.  
  83.             .pipe(uglify())
  84.             .pipe(concat('scripts.min.js'))
  85.  
  86.             .pipe(sourcemaps.write("./"))
  87.             .pipe(gulp.dest(paths.webroot.base))
  88.     });
  89.  
  90.     gulp.watch(paths.devroot.jade, ["jade"]);
  91.     gulp.watch(paths.devroot.scss, ["styles"]);
  92.     gulp.watch(paths.devroot.static, ["static"]);
  93.     gulp.watch(paths.devroot.static, ["js-min"]);
  94.  
  95.     return runSequence(
  96.         "restore-packages",
  97.         "styles",
  98.         "jade",
  99.         "static",
  100.         "js-min",
  101.         cb);
  102. });
  103.  
  104. gulp.task("restore-packages", function (cb) {
  105.     gulp.task("bootstrap", function () {
  106.         return gulp.src(paths.node + "/bootstrap/dist/**/*")
  107.             .pipe(gulp.dest(paths.devroot.vendor + "/bootstrap"))
  108.     });
  109.  
  110.     gulp.task("jquery", function () {
  111.         return gulp.src(paths.node + "/jquery/dist/**/*")
  112.             .pipe(gulp.dest(paths.devroot.vendor + "/jquery"))
  113.     });
  114.  
  115.     gulp.task("font-awesome", function () {
  116.         gulp.src(paths.node + "/font-awesome/css/font-awesome.min.css")
  117.             .pipe(gulp.dest(paths.devroot.vendor + "/font-awesome/css/"));
  118.  
  119.         return gulp.src(paths.node + "/font-awesome/fonts/*")
  120.             .pipe(gulp.dest(paths.devroot.vendor + "/font-awesome/fonts/"));
  121.     });
  122.  
  123.     gulp.task("lightbox2", function () {
  124.         gulp.src(paths.node + "/lightbox2/dist/css/lightbox.min.css")
  125.             .pipe(gulp.dest(paths.devroot.vendor + "/lightbox2/css/"));
  126.  
  127.         gulp.src(paths.node + "/lightbox2/dist/images/*")
  128.             .pipe(gulp.dest(paths.devroot.vendor + "/lightbox2/images/"));
  129.  
  130.         return gulp.src(paths.node + "/lightbox2/dist/js/lightbox.min.js")
  131.             .pipe(gulp.dest(paths.devroot.vendor + "/lightbox2/js/"));
  132.     });
  133.  
  134.     gulp.task("slideout", function () {
  135.         gulp.src(paths.node + "/slideout/dist/slideout.min.js")
  136.             .pipe(gulp.dest(paths.devroot.vendor + "/slideout/js/"));
  137.  
  138.         return gulp.src(paths.node + "/slideout/index.css")
  139.             .pipe(gulp.dest(paths.devroot.vendor + "/slideout/css/"));
  140.     });
  141.  
  142.     return runSequence(
  143.         "bootstrap",
  144.         "jquery",
  145.         "font-awesome",
  146.         "lightbox2",
  147.         "slideout",
  148.         cb);
  149. });
Add Comment
Please, Sign In to add comment