Skip to content

Instantly share code, notes, and snippets.

@umefarooq
Forked from tristanisfeld/browsersync.js
Created May 21, 2023 14:07
Show Gist options
  • Save umefarooq/4bdb78e6a6e3863efd0732ee74dc2b5d to your computer and use it in GitHub Desktop.
Save umefarooq/4bdb78e6a6e3863efd0732ee74dc2b5d to your computer and use it in GitHub Desktop.

Revisions

  1. @tristanisfeld tristanisfeld revised this gist Oct 7, 2015. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions browsersync.js
    Original file line number Diff line number Diff line change
    @@ -15,9 +15,9 @@ module.exports = function(gulp, plugins) {
    // -------------------------------------------- Start Task
    browserSync.init(config.browsersync.opts);

    gulp.watch(config.sass.src, gulp.series('sass'));
    gulp.watch(config.typescript.src, gulp.series('ts'));
    gulp.watch(config.browsersync.watch).on('change', browserSync.reload);
    browserSync.watch(config.sass.src, gulp.series('sass'));
    browserSync.watch(config.typescript.src, gulp.series('ts'));
    browserSync.watch(config.browsersync.watch).on('change', browserSync.reload);
    // ---------------------------------------------- End Task
    return stream;
    };
  2. @tristanisfeld tristanisfeld created this gist Sep 22, 2015.
    24 changes: 24 additions & 0 deletions browsersync.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    // =========================================================
    // Gulp Task: browsersync
    // NOTE: Using gulp v4
    // Description: Sync sass, typescript, html, and browser
    // using external config or add modify src
    // npm install --save-dev browser-sync gulp-typescript gulpjs/gulp.git#4.0 gulp-load-plugins
    // Options: node-sass gulp-sass || gulp-ruby-sass
    // =========================================================
    var config = require('../config.js');
    var browserSync = require('browser-sync').create();

    module.exports = function(gulp, plugins) {
    return function () {
    var stream =
    // -------------------------------------------- Start Task
    browserSync.init(config.browsersync.opts);

    gulp.watch(config.sass.src, gulp.series('sass'));
    gulp.watch(config.typescript.src, gulp.series('ts'));
    gulp.watch(config.browsersync.watch).on('change', browserSync.reload);
    // ---------------------------------------------- End Task
    return stream;
    };
    };
    18 changes: 18 additions & 0 deletions clean.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    // =========================================================
    // Gulp Task: clean
    // Description: deletes dist folder
    // npm install --save-del del gulp-load-plugins
    // =========================================================
    var config = require('../config.js'),
    del = require('del');

    module.exports = function(gulp, plugins) {
    return function (cb) {
    var stream =
    // -------------------------------------------- Start Task
    // del(config.clean.folders, cb);
    del('./dist/', cb);
    // ---------------------------------------------- End Task
    return stream;
    };
    };
    130 changes: 130 additions & 0 deletions config.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,130 @@
    // =========================================================
    // Project: PROJECT-NAME
    // =========================================================
    // ------------------------------------------ Export Configs
    module.exports = {
    production: false, // use to programmatically operate on
    // gulp tasks based on environment
    // -------------------------------------------- autoprefixer
    autoprefixer: {
    opts: {
    browsers: ['last 3 versions']
    }
    },
    // --------------------------------------------- browsersync
    browsersync: {
    opts: {
    server: './src/'
    },
    watch: [
    './src/assets/styles/css/**/*.css',
    './src/assets/scripts/js/**/*.js',
    './src/**/*.html'
    ]
    },
    // --------------------------------------------------- clean
    clean: {
    folders: [
    './dist/'
    ]
    },
    html: {
    src: ['./src/**/*.html', '!src/assets/bin/**/*'],
    htmlmin: { // In case more html file operations are needed.
    opts: {
    // https://github.com/kangax/html-minifier
    collapseWhitespace: true,
    removeComments: true
    }
    },
    dest: './dist/'
    },
    // ------------------------------------------------ new-task
    newtask: {
    src: [
    "./gulp/utils/newTaskTemplate.js"
    ],
    outputName: "TASK-TEMPLATE.js",
    dest: "./gulp/tasks/"
    },
    // -------------------------------------------------- rename
    rename: {
    min: { suffix: '.min' }
    },
    // ---------------------------------------------------- sass
    sass: {
    src: [
    "./src/assets/styles/sass/**/*.{scss,sass}"
    ],
    opts: { }, // add sass options here
    outputName: 'main.css',
    dest: './src/assets/styles/css/'
    },
    // ------------------------------------------------- scripts
    scripts: {
    src: [
    './src/assets/scripts/js/**/*.js',
    ],
    dest: './dist/assets/js'
    },
    // -------------------------------------------------- styles
    styles: {
    src: [
    './src/assets/styles/css/**/*.css',
    ],
    dest: './dist/assets/css'
    },
    // ---------------------------------------------- typescript
    typescript: {
    src: [
    './src/assets/scripts/ts/**/*.ts'
    ],
    dest: './src/assets/scripts/js',
    opts: {
    noImplicitAny: true
    }
    },
    // ------------------------------------------------- vendors
    vendors: {
    js: {
    src: [
    './bower_components/bootstrap/dist/js/bootstrap.min.js',
    './bower_components/jquery/dist/jquery.min.js',
    './src/assets/bin/bootstrap-4.0.0-alpha/dist/js/bootstrap.min.js'
    ],
    dest: './dist/assets/js/vendors'
    },
    css: {
    src: [
    './bower_components/font-awesome/css/font-awesome.min.css',
    './bower_components/font-awesome/css/font-awesome.css.map',
    './bower_components/bootstrap/dist/css/bootstrap.min.css',
    './bower_components/bootstrap/dist/css/bootstrap.min.css.map'
    ],
    dest: './dist/assets/css/vendors'
    },
    sass: {
    // NOTE: This is to perform operations on the sass files
    src: [
    './bower_components/font-awesome/scss/**/*.scss', // ex
    './src/assets/bin/bootstrap-4.0.0-alpha/scss/**/*.scss' // ex
    ],
    opts: { },
    dest: './dist/assets/css/vendors'
    },
    less: {
    src: [
    './bower_components/bootstrap/less/**/*.less'
    ],
    opts: { },
    dest: './dist/assets/css/vendors'
    },
    fonts: {
    src: [
    './bower_components/bootstrap/fonts/**/*.*',
    './bower_components/font-awesome/fonts/**/*.*'
    ],
    dest: './dist/assets/fonts'
    }
    }
    }
    58 changes: 58 additions & 0 deletions gulpfile.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,58 @@
    // =========================================================
    // Project: PROJECT-NAME
    // NOTE: Using Gulp 4
    // npm install --save-dev gulp-load-plugins gulpjs/gulp.git#4.0
    // =========================================================
    var gulp = require('gulp'),
    config = require('./gulp/config'),
    plugins = require('gulp-load-plugins')();

    // ---------------------------------- Gulp Terminal Commands
    // ---- gulp
    // ---- gulp build
    // ---- gulp new-task

    // --------------------function to get tasks from gulp/tasks
    function getTask(task) {
    return require('./gulp/tasks/' + task)(gulp, plugins);
    }

    // ---------------------------------------------- Gulp Tasks
    gulp.task('sass', getTask('sass'));
    gulp.task('scripts', getTask('scripts'));
    gulp.task('styles', getTask('styles'));
    gulp.task('ts', getTask('typescript'));
    gulp.task('new-task', getTask('new-task'));
    gulp.task('sync', getTask('browsersync'));
    gulp.task('clean', getTask('clean'));
    gulp.task('moveDist', getTask('move-dist'));
    gulp.task('vendors', getTask('vendors'));
    gulp.task('html', getTask('html'));

    // --------------------------------------- Default Gulp Task
    gulp.task('default', gulp.series(
    gulp.parallel('sass', 'ts'), 'sync')
    );

    // ---------------------------------------------- gulp build
    // vendors - task which moves and operates on node_modules
    // and bower_components dependencies
    // moveDist: moves dist folder to another location
    // on the file system (useful for multiple repos e.g. gh-pages)
    gulp.task('build', gulp.series('clean',
    gulp.parallel('scripts', 'styles', 'html'), 'vendors', 'moveDist')
    );


    // =========================================================
    // Basic example of gulp multifile tasks folder structure
    // =========================================================
    // **** Project-Directory/
    // ------ gulpfile.js
    // ****** src/
    // ****** dist/
    // ****** gulp/
    // -------- config.js
    // ******** tasks/
    // ******** utils/
    // ----------- newTaskTemplate.js
    18 changes: 18 additions & 0 deletions html.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    // =========================================================
    // Gulp Task: html
    // Description: minify html
    // Dependencies: npm install --save-dev gulp-htmlmin
    // =========================================================
    var config = require('../config.js');

    module.exports = function(gulp, plugins) {
    return function () {
    var stream =
    // -------------------------------------------- Start Task
    gulp.src(config.html.src)
    .pipe(plugins.htmlmin(config.html.htmlmin.opts))
    .pipe(gulp.dest(config.html.dest));
    // ---------------------------------------------- End Task
    return stream;
    };
    };
    18 changes: 18 additions & 0 deletions move-dist.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    // =========================================================
    // Gulp Task: moveDist
    // Description: move dist folder to external folder. Useful
    // for multirepo projects. e.g. a gh-pages-site.
    // npm install --save-dev gulp-load-plugins
    // =========================================================
    var config = require('../config.js');

    module.exports = function(gulp, plugins) {
    return function () {
    var stream =
    // -------------------------------------------- Start Task
    gulp.src('./dist/**/*.*')
    .pipe(gulp.dest('./../gh-pages-site'));
    // ---------------------------------------------- End Task
    return stream;
    };
    };
    18 changes: 18 additions & 0 deletions new-task.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    // =========================================================
    // Gulp Task: newTask
    // Description: creates a new multifile task template
    // Dependencies: npm install gulp-rename gulp-load-plugins
    // =========================================================
    var config = require('../config.js');

    module.exports = function(gulp, plugins) {
    return function() {
    var stream =
    // -------------------------------------------- Start Task
    gulp.src(config.newtask.src)
    .pipe(plugins.rename(config.newtask.outputName))
    .pipe(gulp.dest(config.newtask.dest));
    // ---------------------------------------------- End Task
    return stream;
    };
    };
    16 changes: 16 additions & 0 deletions newTaskTemplate.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,16 @@
    // =========================================================
    // Gulp Task:
    // Description:
    // Dependencies: npm install
    // =========================================================
    var config = require('../config.js');

    module.exports = function(gulp, plugins) {
    return function () {
    var stream =
    // -------------------------------------------- Start Task
    gulp.src('')
    // ---------------------------------------------- End Task
    return stream;
    };
    };
    21 changes: 21 additions & 0 deletions sass.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,21 @@
    // =========================================================
    // Gulp Task: sass
    // Description: transpiles sass, adds sourcemaps, prefixes
    // npm install --save-dev node-sass gulp-sass gulp-sourcemaps gulp-autoprefixer gulp-load-plugins
    // =========================================================
    var config = require('../config.js');

    module.exports = function(gulp, plugins) {
    return function () {
    var stream =
    // -------------------------------------------- Start Task
    gulp.src(config.sass.src)
    .pipe(plugins.sourcemaps.init())
    .pipe(plugins.sass().on('error', plugins.sass.logError))
    .pipe(plugins.autoprefixer(config.autoprefixer.opts))
    .pipe(plugins.sourcemaps.write('.'))
    .pipe(gulp.dest(config.sass.dest))
    // ---------------------------------------------- End Task
    return stream;
    };
    };
    22 changes: 22 additions & 0 deletions scripts.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,22 @@
    // =========================================================
    // Gulp Task: scripts
    // Description: uglify all js, add sourcemaps, rename
    // npm install --save-dev gulp-uglify gulp-rename gulp-sourcemaps merge-stream gulp-load-plugins
    // =========================================================
    var config = require('../config.js'),
    merge = require('merge-stream');

    module.exports = function(gulp, plugins) {
    return function () {
    // -------------------------------------------------- src js
    var stream =
    gulp.src(config.scripts.src)
    .pipe(plugins.sourcemaps.init())
    .pipe(plugins.uglify())
    .pipe(plugins.rename(config.rename.min))
    .pipe(plugins.sourcemaps.write('.'))
    .pipe(gulp.dest(config.dist.scripts.js));
    // ------------------------------------------------ End Task
    return stream;
    };
    };
    21 changes: 21 additions & 0 deletions styles.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,21 @@
    // =========================================================
    // Gulp Task: styles
    // Description: minify all css, add sourcemaps, rename
    // Dependencies: npm install --save-dev gulp-minify-css gulp-rename gulp-sourcemaps gulp-load-plugins
    // =========================================================
    var config = require('../config.js');

    module.exports = function(gulp, plugins) {
    return function () {
    var stream =
    // -------------------------------------------- Start Task
    gulp.src(config.styles.src)
    .pipe(plugins.sourcemaps.init())
    .pipe(plugins.minifyCss())
    .pipe(plugins.rename(config.rename.min))
    .pipe(plugins.sourcemaps.write('.'))
    .pipe(gulp.dest(config.dist.styles.css));
    // ---------------------------------------------- End Task
    return stream;
    };
    };
    19 changes: 19 additions & 0 deletions typescript.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,19 @@
    // =========================================================
    // Gulp Task: typescript
    // Description: Transpile .ts files and add sourcemaps
    // npm install --save-dev gulp-typescript gulp-sourcemaps gulp-load-plugins
    // =========================================================
    var config = require('../config.js');

    module.exports = function(gulp, plugins) {
    return function () {
    var stream =
    // -------------------------------------------- Start Task
    gulp.src(config.typescript.src)
    .pipe(plugins.sourcemaps.init())
    .pipe(plugins.typescript(config.typescript.opts));

    // ---------------------------------------------- End Task
    return stream.js.pipe(plugins.sourcemaps.write('.')).pipe(gulp.dest(config.typescript.dest));
    };
    };
    48 changes: 48 additions & 0 deletions vendors.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,48 @@
    // =========================================================
    // Gulp Task: vendors
    // Description: move all node and bower dependencies to dist
    // easily add sass, less, etc. Operate on each as needed.
    // basic configuration supplied
    // npm install --save-dev merge-stream gulp-newer
    // gulp-load-plugins
    // =========================================================
    var config = require('../config.js'),
    merge = require('merge-stream');

    module.exports = function(gulp, plugins) {
    return function () {
    // ---------------------------------------------- Start Task
    // ---- move js files
    var js =
    gulp.src(config.vendors.js.src)
    .pipe(plugins.newer(config.vendors.js.dest))
    .pipe(gulp.dest(config.vendors.js.dest));

    // ---- move css files
    var css =
    gulp.src(config.vendors.css.src)
    .pipe(plugins.newer(config.vendors.css.dest))
    .pipe(gulp.dest(config.vendors.css.dest));

    // ---- move font files
    var fonts =
    gulp.src(config.vendors.fonts.src)
    .pipe(plugins.newer(config.vendors.fonts.dest))
    .pipe(gulp.dest(config.vendors.fonts.dest));

    // ---- sass
    // var sass =
    // gulp.src(config.vendors.sass.src)
    // .pipe(plugins.newer(config.vendors.sass.dest))
    // .pipe(gulp.dest(config.vendors.sass.dest));

    // ---- less
    // var sass =
    // gulp.src(config.vendors.less.src)
    // .pipe(plugins.newer(config.vendors.less.dest))
    // .pipe(gulp.dest(config.vendors.less.dest));

    // ------------------------------------------------ End Task
    return merge( js, css, fonts ); // add sass and/or less
    };
    };