Advertisement
Guest User

Untitled

a guest
Nov 24th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*global
  2.  require
  3.  */
  4. var gulp = require('gulp');
  5. var gulpsync = require('gulp-sync')(gulp);
  6. var gutil = require('gulp-util');
  7. var bower = require('bower');
  8. var concat = require('gulp-concat');
  9. var sass = require('gulp-sass');
  10. var minify = require('gulp-minify');
  11. var minifyCss = require('gulp-minify-css');
  12. var rename = require('gulp-rename');
  13. var sh = require('shelljs');
  14. var clean = require('gulp-clean');
  15. var jshint = require('gulp-jshint');
  16. var ngAnnotate = require('gulp-ng-annotate');
  17. var uglify = require("gulp-uglify");
  18. var imagemin = require('gulp-imagemin');
  19. var htmlreplace = require('gulp-html-replace');
  20. var templateCache = require('gulp-angular-templatecache');
  21.  
  22. var paths = {
  23.     sass: ['./scss/**/*.scss'],
  24.     scripts: ['./www/js/**/*.js', '!./www/js/app.bundle.min.js'], // exclude the file we write too
  25.     images: ['./www/img/**/*'],
  26.     templates: ['./www/templates/**/*.html'],
  27.     css: ['./www/css/**/*.min.css'],
  28.     html: ['./www/index.html'],
  29.     ionicbundle: ['./www/lib/ionic/js/ionic.bundle.min.js'],
  30.     ionicfonts: ['./www/lib/ionic/fonts/*'],
  31.     lib: ['./www/lib/parse-1.2.18.min.js', './www/lib/moment.min.js', './www/lib/bindonce.min.js'],
  32.     dist: ['./dist/']
  33. };
  34.  
  35. var files = {
  36.     jsbundle: 'app.bundle.min.js',
  37.     appcss: 'app.css'
  38. };
  39.  
  40. var siberian_dist = [
  41.     "./www/js/app.min.js",
  42.     "./www/js/utils.bundle.min.js",
  43.     "./www/js/services/services.bundle.js",
  44.     "./www/js/services/services.bundle.min.js",
  45.     "./www/js/providers/providers.bundle.js",
  46.     "./www/js/providers/providers.bundle.min.js",
  47.     "./www/js/packed/*.min.js",
  48.     "./www/js/filters/filters.min.js",
  49.     "./www/js/features/features.bundle.js",
  50.     "./www/js/features/features.bundle.min.js",
  51.     "./www/js/directives/directives.bundle.js",
  52.     "./www/js/directives/directives.bundle.min.js",
  53.     "./dist/app.bundle.min.css",
  54.     "./dist/app.libs.js",
  55.     "./dist/app.libs.min.js"
  56. ];
  57.  
  58. /** Siberian 5.0 build files */
  59. gulp.task("sb", gulpsync.sync(["cleanup", "sass", "bundle_css", "bundle_libs", "compress_js", "pack_features"]));
  60.  
  61. gulp.task("cleanup", function() {
  62.     gulp
  63.         .src(siberian_dist, {
  64.             read: false
  65.         }).pipe(clean());
  66. });
  67.  
  68. gulp.task("bundle_css", function() {
  69.     var css_src = [
  70.         "./www/css/ionRadioFix.css",
  71.         "./www/css/style.css",
  72.         "./www/css/ionic.app.min.css",
  73.         "./www/css/ng-animation.css",
  74.         "./www/css/ion-gallery.css",
  75.         "./www/css/angular-carousel.min.css",
  76.         "./www/css/app.css"
  77.     ];
  78.  
  79.     return gulp.src(css_src)
  80.         .pipe(concat("app.bundle.css"))
  81.         .pipe(minifyCss())
  82.         .pipe(rename({
  83.             extname: '.min.css'
  84.         }))
  85.         .pipe(gulp.dest("./www/dist/"));
  86. });
  87.  
  88. gulp.task("pack_features", function() {
  89.     var features = {
  90.         "application": [
  91.             "./www/js/controllers/application.js"
  92.         ],
  93.         "booking": [
  94.             "./www/js/controllers/booking.js",
  95.             "./www/js/factory/booking.js"
  96.         ],
  97.         "catalog": [
  98.             "./www/js/controllers/catalog.js",
  99.             "./www/js/factory/catalog.js",
  100.             "./www/js/controllers/set-meal.js",
  101.             "./www/js/factory/set-meal.js"
  102.         ],
  103.         "cms": [
  104.             "./www/js/controllers/cms.js"
  105.         ],
  106.         "codescan": [
  107.             "./www/js/controllers/codescan.js"
  108.         ],
  109.         "contact": [
  110.             "./www/js/controllers/contact.js",
  111.             "./www/js/factory/contact.js"
  112.         ],
  113.         "discount": [
  114.             "./www/js/controllers/discount.js",
  115.             "./www/js/factory/discount.js"
  116.         ],
  117.         "event": [
  118.             "./www/js/controllers/event.js",
  119.             "./www/js/factory/event.js"
  120.         ],
  121.         "facebook": [
  122.             "./www/js/controllers/facebook.js"
  123.         ],
  124.         "folder": [
  125.             "./www/js/controllers/folder.js",
  126.             "./www/js/factory/folder.js"
  127.         ],
  128.         "form": [
  129.             "./www/js/controllers/form.js",
  130.             "./www/js/factory/form.js"
  131.         ],
  132.         "homepage": [
  133.             "./www/js/controllers/homepage.js"
  134.         ],
  135.         "image": [
  136.             "./www/js/controllers/image.js",
  137.             "./www/js/factory/image.js"
  138.         ],
  139.         "links": [
  140.             "./www/js/controllers/links.js",
  141.             "./www/js/factory/links.js"
  142.         ],
  143.         "loyalty_card": [
  144.             "./www/js/controllers/loyalty-card.js",
  145.             "./www/js/factory/loyalty-card.js"
  146.         ],
  147.         "maps": [
  148.             "./www/js/controllers/maps.js",
  149.             "./www/js/factory/maps.js"
  150.         ],
  151.         "media": [
  152.             "./www/js/controllers/media-player.js",
  153.             "./www/js/controllers/music.js",
  154.             "./www/js/factory/music.js"
  155.         ],
  156.         "newswall": [
  157.             "./www/js/controllers/newswall.js",
  158.             "./www/js/factory/newswall.js"
  159.         ],
  160.         "padlock": [
  161.             "./www/js/controllers/padlock.js"
  162.         ],
  163.         "places": [
  164.             "./www/js/controllers/places.js",
  165.             "./www/js/factory/places.js"
  166.         ],
  167.         "privacy_policy": [
  168.             "./www/js/controllers/privacy-policy.js"
  169.         ],
  170.         "m_commerce": [
  171.             "./www/js/controllers/mcommerce/cart.js",
  172.             "./www/js/controllers/mcommerce/category.js",
  173.             "./www/js/controllers/mcommerce/product.js",
  174.             "./www/js/controllers/mcommerce/sales/confirmation.js",
  175.             "./www/js/controllers/mcommerce/sales/customer.js",
  176.             "./www/js/controllers/mcommerce/sales/delivery.js",
  177.             "./www/js/controllers/mcommerce/sales/error.js",
  178.             "./www/js/controllers/mcommerce/sales/history.js",
  179.             "./www/js/controllers/mcommerce/sales/payment.js",
  180.             "./www/js/controllers/mcommerce/sales/store.js",
  181.             "./www/js/controllers/mcommerce/sales/stripe.js",
  182.             "./www/js/controllers/mcommerce/sales/success.js",
  183.             "./www/js/factory/mcommerce/cart.js",
  184.             "./www/js/factory/mcommerce/category.js",
  185.             "./www/js/factory/mcommerce/product.js",
  186.             "./www/js/factory/mcommerce/sales/customer.js",
  187.             "./www/js/factory/mcommerce/sales/delivery.js",
  188.             "./www/js/factory/mcommerce/sales/payment.js",
  189.             "./www/js/factory/mcommerce/sales/store.js",
  190.             "./www/js/factory/mcommerce/sales/stripe.js"
  191.         ],
  192.         "push": [
  193.             "./www/js/controllers/push.js"
  194.         ],
  195.         "radio": [
  196.             "./www/js/controllers/radio.js",
  197.             "./www/js/factory/radio.js"
  198.         ],
  199.         "rss": [
  200.             "./www/js/controllers/rss.js",
  201.             "./www/js/factory/rss.js"
  202.         ],
  203.         "social_gaming": [
  204.             "./www/js/controllers/social-gaming.js",
  205.             "./www/js/factory/social-gaming.js"
  206.         ],
  207.         "source_code": [
  208.             "./www/js/controllers/source-code.js",
  209.             "./www/js/factory/source-code.js"
  210.         ],
  211.         "tip": [
  212.             "./www/js/controllers/tip.js",
  213.             "./www/js/factory/tip.js"
  214.         ],
  215.         "topic": [
  216.             "./www/js/controllers/topic.js",
  217.             "./www/js/factory/topic.js"
  218.         ],
  219.         "twitter": [
  220.             "./www/js/controllers/twitter.js",
  221.             "./www/js/factory/twitter.js"
  222.         ],
  223.         "video": [
  224.             "./www/js/controllers/video.js",
  225.             "./www/js/factory/video.js"
  226.         ],
  227.         "weather": [
  228.             "./www/js/controllers/weather.js",
  229.             "./www/js/factory/weather.js"
  230.         ],
  231.         "wordpress": [
  232.             "./www/js/controllers/wordpress.js",
  233.             "./www/js/factory/wordpress.js"
  234.         ],
  235.         "youtube": [
  236.             "./www/js/factory/youtube.js"
  237.         ]
  238.     };
  239.  
  240.     for(var feature in features) {
  241.  
  242.         var src = features[feature];
  243.         var filename = feature + ".bundle.js";
  244.         gulp
  245.             .src(src)
  246.             .pipe(concat(filename, {
  247.                 newLine: ';'
  248.             }))
  249.             .pipe(minify({
  250.                 mangle: false,
  251.                 ext: {
  252.                     min: ".min.js"
  253.                 }
  254.             }))
  255.             .pipe(gulp.dest("./www/js/packed/"));
  256.     }
  257.  
  258. });
  259.  
  260. gulp.task("compress_js", function() {
  261.  
  262.     /** FILTERS */
  263.     var filters = [
  264.         "./www/js/filters/filters.js"
  265.     ];
  266.  
  267.     gulp.src(filters)
  268.         .pipe(minify({
  269.             mangle: false,
  270.             ext: {
  271.                 min: ".min.js"
  272.             }
  273.         }))
  274.         .pipe(gulp.dest("./www/js/filters/"));
  275.  
  276.     /** PROVIDERS */
  277.     var providers = [
  278.         "./www/js/providers/*.js",
  279.         "!./www/js/providers/providers.bundle.js",
  280.         "!./www/js/providers/*.min.js"
  281.     ];
  282.  
  283.     gulp.src(providers)
  284.         .pipe(concat("providers.bundle.js", {newLine: ';'}))
  285.         .pipe(minify({
  286.             mangle: false,
  287.             ext: {
  288.                 min: ".min.js"
  289.             }
  290.         }))
  291.         .pipe(gulp.dest("./www/js/providers/"));
  292.  
  293.     /** CONTROLLERS */
  294.     var controllers = [
  295.         "./www/js/controllers/*.js",
  296.         "!./www/js/controllers/*.min.js"
  297.     ];
  298.  
  299.     gulp.src(controllers)
  300.         .pipe(minify({
  301.             mangle: false,
  302.             ext: {
  303.                 min: ".min.js"
  304.             }
  305.         }))
  306.         .pipe(gulp.dest("./www/js/controllers/"));
  307.  
  308.     /** FACTORY */
  309.     var factories = [
  310.         "./www/js/factory/*.js",
  311.         "!./www/js/factory/*.min.js"
  312.     ];
  313.  
  314.     gulp.src(factories)
  315.         .pipe(minify({
  316.             mangle: false,
  317.             ext: {
  318.                 min: ".min.js"
  319.             }
  320.         }))
  321.         .pipe(gulp.dest("./www/js/factory/"));
  322.  
  323.     /** DIRECTIVES */
  324.     var directives = [
  325.         "./www/js/directives/*.js",
  326.         "!./www/js/directives/directives.bundle.js",
  327.         "!./www/js/directives/*.min.js"
  328.     ];
  329.  
  330.     gulp.src(directives)
  331.         .pipe(concat("directives.bundle.js", {newLine: ';'}))
  332.         .pipe(minify({
  333.             mangle: false,
  334.             ext: {
  335.                 min: ".min.js"
  336.             }
  337.         }))
  338.         .pipe(gulp.dest("./www/js/directives/"));
  339.  
  340.  
  341.     /** SERVICES */
  342.     var services = [
  343.         "./www/js/services/*.js",
  344.         "!./www/js/services/services.bundle.js",
  345.         "!./www/js/services/*.min.js"
  346.     ];
  347.  
  348.     gulp.src(services)
  349.         .pipe(concat("services.bundle.js", {newLine: ';'}))
  350.         .pipe(minify({
  351.             mangle: false,
  352.             ext: {
  353.                 min: ".min.js"
  354.             }
  355.         }))
  356.         .pipe(gulp.dest("./www/js/services/"));
  357.  
  358.  
  359.     /** UTILS */
  360.     var utils = [
  361.         "./www/js/utils/features.js",
  362.         "./www/js/utils/form-post.js",
  363.         "!./www/js/utils/utils.bundle.js"
  364.     ];
  365.  
  366.     gulp.src(utils)
  367.         .pipe(concat("utils.bundle.js", {newLine: ';'}))
  368.         .pipe(minify({
  369.             mangle: false,
  370.             ext: {
  371.                 min: ".min.js"
  372.             }
  373.         }))
  374.         .pipe(gulp.dest("./www/js/utils/"));
  375.  
  376.  
  377.     /** LIBRARIES */
  378.     var libraries = [
  379.         "./www/js/libraries/*.js",
  380.         "!./www/js/libraries/*.min.js"
  381.     ];
  382.  
  383.     gulp.src(libraries)
  384.         .pipe(minify({
  385.             mangle: false,
  386.             ext: {
  387.                 min: ".min.js"
  388.             }
  389.         }))
  390.         .pipe(gulp.dest("./www/js/libraries/"));
  391.  
  392.     var libraries_bundle = [
  393.         "./www/js/libraries/*.min.js",
  394.         "!./www/js/libraries/moment.min.js",
  395.         "!./www/js/libraries/angular-carousel.min.js",
  396.         "!./www/js/libraries/progressbar.min.js",
  397.         "!./www/js/libraries/libraries.bundle.min.js"
  398.     ];
  399.  
  400.     gulp.src(libraries_bundle)
  401.         .pipe(concat("libraries.bundle.min.js", {newLine: ';'}))
  402.         .pipe(gulp.dest("./www/js/libraries/"));
  403.  
  404.  
  405.     /** MAIN APP */
  406.     var app = [
  407.         "./www/js/app.js",
  408.         "!./www/js/app.min.js"
  409.     ];
  410.  
  411.     gulp.src(app)
  412.         .pipe(minify({
  413.             mangle: false,
  414.             ext: {
  415.                 min: ".min.js"
  416.             }
  417.         }))
  418.         .pipe(gulp.dest("./www/js/"));
  419.  
  420.  
  421.     /** ENTRY POINT FEATURES */
  422.     var features = [
  423.         "./www/js/features/*.js",
  424.         "!./www/js/features/features.bundle.js",
  425.         "!./www/js/features/*.min.js"
  426.     ];
  427.  
  428.     gulp.src(features)
  429.         .pipe(concat("features.bundle.js", {newLine: ';'}))
  430.         .pipe(minify({
  431.             mangle: false,
  432.             ext: {
  433.                 min: ".min.js"
  434.             }
  435.         }))
  436.         .pipe(gulp.dest("./www/js/features/"));
  437. });
  438.  
  439. gulp.task("bundle_libs", function() {
  440.  
  441.     var js_src_lib = [
  442.         "./www/lib/polyfills.js",
  443.         "./www/lib/utils.js",
  444.         "./www/lib/ionic/js/ionic.bundle.min.js",
  445.         "./www/lib/ionic/js/angular/angular-route.js",
  446.         "./www/lib/ngCordova/dist/ng-cordova.min.js"
  447.     ];
  448.  
  449.     gulp.src(js_src_lib)
  450.         .pipe(concat("app.libs.js", {newLine: ';'}))
  451.         .pipe(minify({
  452.             mangle: false,
  453.             ext: {
  454.                 min: ".min.js"
  455.             }
  456.         }))
  457.         .pipe(gulp.dest("./www/dist/"));
  458. });
  459.  
  460.  
  461. /** Default ionic gulp tasks */
  462. gulp.task('default', ['sass']);
  463.  
  464. gulp.task('build', ['sass', 'scripts', 'styles', 'imagemin', 'index', 'copy']);
  465.  
  466. gulp.task('clean', function() {
  467.     return gulp.src(paths.dist, {
  468.         read: false
  469.     })
  470.         .pipe(clean());
  471. });
  472.  
  473. // Copy all other files to dist directly
  474. gulp.task('copy', ['clean'], function() {
  475.     // Copy ionic bundle file
  476.     gulp.src(paths.ionicbundle)
  477.         .pipe(gulp.dest(paths.dist + 'lib/ionic/js/.'));
  478.  
  479.     // Copy ionic fonts
  480.     gulp.src(paths.ionicfonts)
  481.         .pipe(gulp.dest(paths.dist + 'lib/ionic/fonts'));
  482.  
  483.     // Copy lib scripts
  484.     gulp.src(paths.lib)
  485.         .pipe(gulp.dest(paths.dist + 'lib'));
  486.  
  487.     // Copy extra files
  488.     //gulp.src(paths.extras)
  489.       //  .pipe(gulp.dest(paths.dist + '.'));
  490. });
  491.  
  492. // styles - min app css then copy min css to dist
  493. gulp.task('minappcss', function() {
  494.     return gulp.src('./www/css/' + files.appcss)
  495.         .pipe(minifyCss())
  496.         .pipe(rename({
  497.             extname: '.min.css'
  498.         }))
  499.         .pipe(gulp.dest('./www/css/'));
  500. });
  501.  
  502. // styles - min app css then copy min css to dist
  503. gulp.task('styles', ['clean', 'minappcss'], function() {
  504.     gulp.src(paths.css)
  505.         .pipe(gulp.dest(paths.dist + 'css'));
  506. });
  507.  
  508. // Imagemin images and ouput them in dist
  509. gulp.task('imagemin', ['clean'], function() {
  510.     gulp.src(paths.images)
  511.         .pipe(imagemin())
  512.         .pipe(gulp.dest(paths.dist + 'img'));
  513. });
  514.  
  515. gulp.task('watch', function() {
  516.     gulp.watch(paths.sass, ['sass']);
  517. });
  518.  
  519. gulp.task('install', ['git-check'], function() {
  520.     return bower.commands.install()
  521.         .on('log', function(data) {
  522.             gutil.log('bower', gutil.colors.cyan(data.id), data.message);
  523.         });
  524. });
  525.  
  526. gulp.task('sass', function(done) {
  527.   gulp.src('./scss/ionic.app.scss')
  528.     .pipe(sass())
  529.     .on('error', sass.logError)
  530.     .pipe(gulp.dest('./www/css/'))
  531.     .pipe(minifyCss({
  532.       keepSpecialComments: 0
  533.     }))
  534.     .pipe(rename({ extname: '.min.css' }))
  535.     .pipe(gulp.dest('./www/css/'))
  536.     .on('end', done);
  537. });
  538.  
  539. gulp.task('watch', function() {
  540.   gulp.watch(paths.sass, ['sass']);
  541. });
  542.  
  543. gulp.task('install', ['git-check'], function() {
  544.   return bower.commands.install()
  545.     .on('log', function(data) {
  546.       gutil.log('bower', gutil.colors.cyan(data.id), data.message);
  547.     });
  548. });
  549.  
  550. gulp.task('git-check', function(done) {
  551.   if (!sh.which('git')) {
  552.     console.log(
  553.       '  ' + gutil.colors.red('Git is not installed.'),
  554.       '\n  Git, the version control system, is required to download Ionic.',
  555.       '\n  Download git here:', gutil.colors.cyan('http://git-scm.com/downloads') + '.',
  556.       '\n  Once git is installed, run \'' + gutil.colors.cyan('gulp install') + '\' again.'
  557.     );
  558.     process.exit(1);
  559.   }
  560.   done();
  561. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement