1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- var fs = require('fs');
- var glob = require('multi-glob').glob;
- var chalk = require('chalk');
- var notifier = require('node-notifier');
- var babelify = require('babelify');
- var browserify = require('browserify');
- var watchify = require('watchify');
- var src = 'src/js/app.js';
- var dest = 'static/js/app.js';
- var pattern = 'src/examples/**/' + src;
- glob([pattern, 'website/' + pattern], function(err, files) {
- if (err) throw new Error(err);
- var mute = false;
- files.forEach(function(file) {
- var watcher = browserify(file, {
- cache: {},
- packageCache: {},
- plugin: [watchify]
- }).transform(babelify);
- watcher
- .on('update', bundle)
- .on('error', handleError)
- .on('log', function(msg) {
- console.log(chalk.green('✓ done:'), chalk.bold(file), chalk.gray.dim(msg));
- mute = false;
- });
- bundle();
- function bundle(id) {
- if (id && !mute) {
- console.log(chalk.cyan('change:'), chalk.bold(id[0]));
- mute = true;
- }
- var bundle = watcher.bundle();
- bundle.pipe(createStream(file.replace(src, dest)));
- bundle.pipe(createStream('public' + file.slice(3)));
- }
- });
- });
- function createStream(filepath) {
- return fs.createWriteStream(filepath);
- }
- function handleError(err) {
- console.log(chalk.red('✗ error:'), err.message);
- notifier.notify({
- 'title': 'Build failed:',
- 'message': err.message
- })
- this.emit('end');
- }
|