Veikedo

Untitled

Apr 1st, 2016
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /// <binding ProjectOpened='watch' />
  2. // ReSharper disable VariableCanBeMadeLet
  3.  
  4. var gulp = require("gulp"),
  5.     concat = require("gulp-concat"),
  6.     del = require("del"),
  7.     rename = require("gulp-rename"),
  8.     runSequence = require("run-sequence"),
  9.     sourcemaps = require("gulp-sourcemaps"),
  10.     uglify = require("gulp-uglify"),
  11.     rjs = require("gulp-requirejs-optimize"),
  12.     watch = require("gulp-watch"),
  13.     install = require("gulp-install"),
  14.     ts = require("gulp-typescript"),
  15.     plumber = require("gulp-plumber"),
  16.     jade = require("gulp-jade"),
  17.     notify = require("gulp-notify");
  18.  
  19. const paths = (function() {
  20.     const webrootBase = "wwwroot";
  21.     const devrootBase = "App_Scripts";
  22.  
  23.     const paths = {
  24.         webroot: {
  25.             base: webrootBase,
  26.             vendor: webrootBase + "/vendor",
  27.             app: webrootBase + "/app"
  28.         },
  29.         bundles: {},
  30.         devroot: {
  31.             base: devrootBase,
  32.             app: devrootBase + "/app",
  33.             static: devrootBase + "/**/*.{html,css,js,jpg,png,bmp,svg,eot,svg,ttf,woff,woff2,otf,gif,ico,pdf}",
  34.             ts: [
  35.                 devrootBase + "/**/*.ts",
  36.                 "typings/browser.d.ts",
  37.                 "typings/browser/**/*.d.ts",
  38.                 "Scripts/typings/**/*.d.ts"
  39.             ],
  40.             js: devrootBase + "/**/*.js",
  41.             scss: devrootBase + "/**/*.scss",
  42.             jade: [devrootBase + "/**/*.jade"],
  43.             vendor: devrootBase + "/vendor"
  44.         },
  45.         npm: "node_modules"
  46.     };
  47.  
  48.     const bundles = {
  49.         "/knockout/knockout.bundle.js": "/knockout/*.js"
  50.     };
  51.  
  52.     for (var key in bundles) {
  53.         if (bundles.hasOwnProperty(key)) {
  54.             paths.bundles[key] = devrootBase + bundles[key];
  55.         }
  56.     }
  57.  
  58.     return paths;
  59. })();
  60.  
  61. gulp.task("restore-packages", function(cb) {
  62.     gulp.src(["package.json"]).pipe(install());
  63.  
  64.     const lib = {
  65.         "/knockout": "/knockout/build/output/knockout-latest.js",
  66.         "/accounting": "/accounting/accounting.js",
  67.         "/jquery": "/jquery/dist/jquery.js",
  68.         "/jquery-migrate": "/jquery-migrate/dist/jquery-migrate",
  69.         "/jquery-ui": "/jquery-ui/jquery-ui.js",
  70.         "/knockout-mapping": "/knockout-mapping/dist/knockout-mapping.js",
  71.         "/knockstrap": "/knockstrap/build/knockstrap.js",
  72.         "/requirejs": "/requirejs/require.js",
  73.         "/requirejs-text": "/requirejs-text/text.js"
  74.     };
  75.  
  76.     for (var p in lib) {
  77.         if (lib.hasOwnProperty(p)) {
  78.             gulp.src(paths.npm + lib[p]).pipe(gulp.dest(paths.webroot.vendor + p));
  79.         }
  80.     }
  81.  
  82.     cb();
  83. });
  84.  
  85. gulp.task("minify", function() {
  86.     return gulp
  87.         .src(paths.webroot.vendor + "/**/*.js")
  88.         .pipe(sourcemaps.init())
  89.         .pipe(uglify())
  90.         .pipe(sourcemaps.write("./"))
  91.         .pipe(gulp.dest(paths.webroot.vendor));
  92. });
  93.  
  94. gulp.task("bundle", function() {
  95.     for (var key in paths.bundles) {
  96.         if (paths.bundles.hasOwnProperty(key)) {
  97.             gulp
  98.                 .src(paths.bundles[key])
  99.                 .pipe(sourcemaps.init())
  100.                 .pipe(uglify())
  101.                 .pipe(concat(key))
  102.                 .pipe(sourcemaps.write("./"))
  103.                 .pipe(gulp.dest(paths.webroot.app));
  104.         }
  105.     }
  106. });
  107.  
  108. var tsProject = ts.createProject("tsconfig.json", { noExternalResolve: true });
  109.  
  110. gulp.task("scripts", function() {
  111.     return gulp.src(paths.devroot.ts)
  112.         .pipe(plumber({ errorHandler: notify.onError("ts: <%= error.message %>") }))
  113.         .pipe(sourcemaps.init())
  114.         .pipe(ts(tsProject))
  115.         .pipe(uglify())
  116.         .pipe(sourcemaps.write("./"))
  117.         .pipe(gulp.dest(paths.webroot.app));
  118. });
  119.  
  120. gulp.task("jade", function() {
  121.     gulp.src(paths.devroot.jade)
  122.         .pipe(plumber({ errorHandler: notify.onError("jade: <%= error.message %>") }))
  123.         .pipe(jade({ pretty: true }))
  124.         .pipe(gulp.dest(paths.webroot.app));
  125. });
  126.  
  127. gulp.task("static", function() {
  128.     gulp.src(paths.devroot.static)
  129.         .pipe(gulp.dest(paths.webroot.app));
  130. });
  131.  
  132. gulp.task("watch", ["scripts", "jade", "static"], function() {
  133.     gulp.watch(paths.devroot.ts, ["scripts"]);
  134.     gulp.watch(paths.devroot.jade, ["jade"]);
  135.     gulp.watch(paths.devroot.static, ["static"]);
  136. });
Advertisement
Add Comment
Please, Sign In to add comment