mirror of
				https://github.com/fooflington/selfdefined.git
				synced 2025-11-04 07:39:03 +00:00 
			
		
		
		
	
		
			
	
	
		
			92 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			92 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								#Browsersync - Browserify, Babelify + Watchify + Sourcemaps Example
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Installation/Usage:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To try this example, follow these 4 simple steps. 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Step 1**: Clone this entire repo
							 | 
						||
| 
								 | 
							
								```bash
							 | 
						||
| 
								 | 
							
								$ git clone https://github.com/Browsersync/recipes.git bs-recipes
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Step 2**: Move into the directory containing this example
							 | 
						||
| 
								 | 
							
								```bash
							 | 
						||
| 
								 | 
							
								$ cd bs-recipes/recipes/gulp.browserify
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Step 3**: Install dependencies
							 | 
						||
| 
								 | 
							
								```bash
							 | 
						||
| 
								 | 
							
								$ npm install
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Step 4**: Run the example
							 | 
						||
| 
								 | 
							
								```bash
							 | 
						||
| 
								 | 
							
								$ npm start
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Additional Info:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This one is a beast. Write your React JSX code, in ES6, compiled by Browserify and auto-reload all devices
							 | 
						||
| 
								 | 
							
								when the compilation is complete.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Preview of `gulpfile.js`:
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								var gulp        = require('gulp');
							 | 
						||
| 
								 | 
							
								var gutil       = require('gulp-util');
							 | 
						||
| 
								 | 
							
								var source      = require('vinyl-source-stream');
							 | 
						||
| 
								 | 
							
								var babelify    = require('babelify');
							 | 
						||
| 
								 | 
							
								var watchify    = require('watchify');
							 | 
						||
| 
								 | 
							
								var exorcist    = require('exorcist');
							 | 
						||
| 
								 | 
							
								var browserify  = require('browserify');
							 | 
						||
| 
								 | 
							
								var browserSync = require('browser-sync').create();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Watchify args contains necessary cache options to achieve fast incremental bundles.
							 | 
						||
| 
								 | 
							
								// See watchify readme for details. Adding debug true for source-map generation.
							 | 
						||
| 
								 | 
							
								watchify.args.debug = true;
							 | 
						||
| 
								 | 
							
								// Input file.
							 | 
						||
| 
								 | 
							
								var bundler = watchify(browserify('./app/js/app.js', watchify.args));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Babel transform
							 | 
						||
| 
								 | 
							
								bundler.transform(babelify.configure({
							 | 
						||
| 
								 | 
							
								    sourceMapRelative: 'app/js'
							 | 
						||
| 
								 | 
							
								}));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// On updates recompile
							 | 
						||
| 
								 | 
							
								bundler.on('update', bundle);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function bundle() {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    gutil.log('Compiling JS...');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return bundler.bundle()
							 | 
						||
| 
								 | 
							
								        .on('error', function (err) {
							 | 
						||
| 
								 | 
							
								            gutil.log(err.message);
							 | 
						||
| 
								 | 
							
								            browserSync.notify("Browserify Error!");
							 | 
						||
| 
								 | 
							
								            this.emit("end");
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								        .pipe(exorcist('app/js/dist/bundle.js.map'))
							 | 
						||
| 
								 | 
							
								        .pipe(source('bundle.js'))
							 | 
						||
| 
								 | 
							
								        .pipe(gulp.dest('./app/js/dist'))
							 | 
						||
| 
								 | 
							
								        .pipe(browserSync.stream({once: true}));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Gulp task alias
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								gulp.task('bundle', function () {
							 | 
						||
| 
								 | 
							
								    return bundle();
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * First bundle, then serve from the ./app directory
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								gulp.task('default', ['bundle'], function () {
							 | 
						||
| 
								 | 
							
								    browserSync.init({
							 | 
						||
| 
								 | 
							
								        server: "./app"
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 |