Advertisement
MYXOMOPX

gulp tsify babel

Aug 30th, 2016
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  Параметры:
  3.     uglify - минимизирует код при true
  4.     SDAddress - подменяет адрес бэкэндовой части (Адрес целиком: http://host:port)
  5.     HTTPTimeout - стандартный таймаут для http запросов
  6.  */
  7.  
  8. var gulp = require('gulp');
  9. var browserify = require('browserify');
  10. var babelify = require('babelify');
  11. var rename = require("gulp-rename");
  12. var sourcemaps = require('gulp-sourcemaps');
  13. var rimraf = require('gulp-rimraf'); // Удаление папки. Maven::clean
  14. var ngAnnotate = require('gulp-ng-annotate');
  15. var concat = require('gulp-concat-util');
  16. var htmlclean = require('gulp-htmlclean');
  17. var autoprefixer = require('gulp-autoprefixer');
  18. var plumber = require('gulp-plumber'); // игнорит ошибки при watch
  19. var util = require('gulp-util');
  20. var env = util.env;
  21. var gulpif = require('gulp-if');
  22. var less = require('gulp-less');
  23. var minifyCss = require('gulp-minify-css');
  24. var replace = require('gulp-replace');
  25. var stringify = require('stringify');
  26. var browserSync = require('browser-sync');
  27. var uglifyify = require('uglifyify');
  28. var tsify = require('tsify');
  29. var babel = require('gulp-babel');
  30.  
  31. var source = require('vinyl-source-stream');
  32. var buffer = require('vinyl-buffer');
  33.  
  34.  
  35. var replaceConf = {
  36.     SDAddress:env.SDAddress||"http://localhost:65080/ajax",
  37.     HTTPTimeout:env.HTTPTimeout!=undefined?env.HTTPTimeout:30000
  38. };
  39.  
  40. var serverConfig = {
  41.     server: {
  42.         baseDir: "./out",
  43.         routes: {
  44.             "*": "index.html"
  45.         }
  46.     },
  47.     tunnel: true,
  48.     host: 'localhost',
  49.     port: 9001,
  50.     logPrefix: "AnLog"
  51. };
  52.  
  53. gulp.task('build:js-vendor', function () {
  54.     var files = [
  55.         "node_modules/angular/angular.min.js",
  56.         "node_modules/angular-ui-router/release/angular-ui-router.min.js",
  57.         "node_modules/angular-cookies/angular-cookies.min.js",
  58.         "node_modules/jquery/dist/jquery.min.js",
  59.         "node_modules/bootstrap/dist/js/bootstrap.min.js",
  60.     ];
  61.     return gulp.src(files)
  62.         .pipe(plumber())
  63.         .pipe(sourcemaps.init({loadMaps: true}))
  64.         .pipe(concat("vendor.min.js"))
  65.         .pipe(sourcemaps.write('./'))
  66.         .pipe(gulp.dest("./out/js"))
  67. });
  68.  
  69. gulp.task('build:js', function () {
  70.     // set up the browserify instance on a task basis
  71.     var sources = browserify({
  72.         entries: './src/js/modules/ServiceDesk/ServiceDesk.js',
  73.         debug: true
  74.     });
  75.  
  76.     sources = sources.plugin(tsify, {
  77.         target: 'es6',
  78.     });
  79.  
  80.     sources = sources.transform(babelify,{
  81.         presets: ["es2015", "stage-0"],
  82.         only: /src\/js\/.*/,
  83.         extensions: [ '.tsx', '.ts', '.js'],
  84.         sourceMapsAbsolute: true
  85.     });
  86.     sources = sources.transform(stringify, ['.html']);
  87.     if (env.uglify) {
  88.         sources = sources.transform(uglifyify, {ignore: '**/*.min.js', sourcemap: true});
  89.     }
  90.  
  91.  
  92.     return sources.bundle()
  93.         .on('error',console.error.bind(console))
  94.         .pipe(source('app.min.js'))
  95.         .pipe(buffer())
  96.         .pipe(plumber())
  97.         .pipe(sourcemaps.init({loadMaps: true}))
  98.         .pipe(replace("SERVICEDESK_ADDRESS",replaceConf.SDAddress))
  99.         .pipe(replace("'HTTP_TIMEOUT'",replaceConf.HTTPTimeout))
  100.         // .pipe(babel({
  101.         //     presets: ["es2015", "stage-0"],
  102.         //     only: /src\/js\/.*/,
  103.         //     sourceMapsAbsolute: true,
  104.         //     sourceType: 'module'
  105.         // }))
  106.         .pipe(sourcemaps.write('./'))
  107.         .pipe(gulp.dest('./out/js/'));
  108. });
  109.  
  110. gulp.task('watch:js',gulp.series('build:js',function doWatchJs(){
  111.     return gulp.watch("src/js/**/*",gulp.series('build:js',"webserver:reload"));
  112. }));
  113.  
  114.  
  115. gulp.task('build:less', function(){
  116.     return gulp.src('./src/less/style.less')
  117.         .pipe(less())
  118.         .pipe(sourcemaps.init({loadMaps: true}))
  119.         .pipe(rename('style.min.css'))
  120.         .pipe(minifyCss())
  121.         .pipe(sourcemaps.write('./'))
  122.         .pipe(gulp.dest('./out/css/'))
  123. });
  124.  
  125. gulp.task('watch:less',gulp.series('build:less',function doWatchLess(){
  126.     return gulp.watch("src/css/*",gulp.series('build:less',"webserver:reload"));
  127. }));
  128.  
  129. gulp.task("html:copy", function copyHtml() {
  130.     return gulp.src("src/index.html")
  131.         .pipe(gulp.dest("out/"))
  132. });
  133.  
  134. gulp.task('watch:html', gulp.series('html:copy',function doWatchHtml(){
  135.     return gulp.watch("src/index.html",gulp.series('html:copy',"webserver:reload"));
  136. }));
  137.  
  138. gulp.task("webserver:start", function webServer() {
  139.     return browserSync.init(serverConfig);
  140.     // open(serverConfig.host+":"+serverConfig.port)
  141. });
  142.  
  143. gulp.task("webserver:reload", function WSReload(done) {
  144.     browserSync.reload();
  145.     done();
  146. });
  147.  
  148. gulp.task('watch',gulp.parallel('watch:js','watch:less','watch:html'));
  149. gulp.task('build',gulp.parallel('build:less','build:js','build:js-vendor','html:copy'));
  150.  
  151. gulp.task("debug", gulp.series("build",gulp.parallel("watch","webserver:start")));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement