Permalink
Cannot retrieve contributors at this time
Fetching contributors…
| require('babel-core/register'); | |
| var gulp = require('gulp'), | |
| path = require('path'), | |
| // utils | |
| notify = require('gulp-notify'), | |
| debug = require('debug')('freecc:gulp'), | |
| bower = require('bower-main-files'), | |
| // loopback client | |
| browserify = require('browserify'), | |
| boot = require('loopback-boot'), | |
| envify = require('envify/custom'), | |
| toVinylWithName = require('vinyl-source-stream'), | |
| // react app | |
| webpack = require('gulp-webpack'), | |
| webpackConfig = require('./webpack.config.js'), | |
| webpackConfigNode = require('./webpack.config.node.js'), | |
| // server process | |
| nodemon = require('gulp-nodemon'), | |
| sync = require('browser-sync'), | |
| inject = require('gulp-inject'), | |
| // css | |
| less = require('gulp-less'), | |
| // lint | |
| eslint = require('gulp-eslint'); | |
| var reloadDelay = 1000; | |
| var reload = sync.reload; | |
| var paths = { | |
| server: './server/server.js', | |
| serverIgnore: [ | |
| 'gulpfile.js', | |
| 'public/', | |
| 'node_modules/' | |
| ], | |
| publicJs: './public/js', | |
| loopback: { | |
| client: './client/loopbackClient', | |
| root: path.join(__dirname, 'client/'), | |
| clientName: 'lbApp' | |
| }, | |
| client: { | |
| src: './client', | |
| dest: 'public/js' | |
| }, | |
| node: { | |
| src: './client', | |
| dest: 'common/app' | |
| }, | |
| syncWatch: [ | |
| 'public/**/*.*' | |
| ] | |
| }; | |
| gulp.task('inject', function() { | |
| gulp.src('views/home.jade') | |
| .pipe(inject(gulp.src(bower()), { | |
| //ignorePath: '/public' | |
| })) | |
| .pipe(gulp.dest('views')); | |
| }); | |
| // NOTE(berks): not using this for now as loopback client is just too large | |
| gulp.task('loopback', function() { | |
| var config = { | |
| basedir: __dirname, | |
| debug: true, | |
| cache: {}, | |
| packageCache: {}, | |
| fullPaths: true, | |
| standalone: paths.loopback.clientName | |
| }; | |
| var b = browserify(config); | |
| // compile loopback for the client | |
| b.require(paths.loopback.client); | |
| boot.compileToBrowserify(paths.loopback.root, b); | |
| // sub process.env for proper strings | |
| b.transform(envify({ | |
| NODE_ENV: 'development' | |
| })); | |
| return b.bundle() | |
| .on('error', errorNotifier) | |
| .pipe(toVinylWithName(paths.loopback.clientName + '.js')) | |
| .pipe(gulp.dest(paths.publicJs)); | |
| }); | |
| gulp.task('pack-client', function() { | |
| return gulp.src(webpackConfig.entry) | |
| .pipe(webpack(webpackConfig)) | |
| .pipe(gulp.dest(webpackConfig.output.path)); | |
| }); | |
| gulp.task('pack-node', function() { | |
| return gulp.src(webpackConfigNode.entry) | |
| .pipe(webpack(webpackConfigNode)) | |
| .pipe(gulp.dest(webpackConfigNode.output.path)); | |
| }); | |
| gulp.task('pack', ['pack-client', 'pack-node']); | |
| gulp.task('serve', function(cb) { | |
| var called = false; | |
| nodemon({ | |
| script: paths.server, | |
| ext: '.js', | |
| ignore: paths.serverIgnore, | |
| exec: './node_modules/.bin/babel-node', | |
| env: { | |
| 'NODE_ENV': 'development', | |
| 'DEBUG': process.env.DEBUG || 'freecc:*' | |
| } | |
| }) | |
| .on('start', function() { | |
| if (!called) { | |
| called = true; | |
| setTimeout(function() { | |
| cb(); | |
| }, reloadDelay); | |
| } | |
| }) | |
| .on('restart', function(files) { | |
| if (files) { | |
| debug('Files that changes: ', files); | |
| } | |
| setTimeout(function() { | |
| debug('Restarting browsers'); | |
| reload(); | |
| }, reloadDelay); | |
| }); | |
| }); | |
| gulp.task('sync', ['serve'], function() { | |
| sync.init(null, { | |
| proxy: 'http://localhost:3000', | |
| logLeval: 'debug', | |
| files: paths.syncWatch, | |
| port: 3001, | |
| open: false, | |
| reloadDelay: reloadDelay | |
| }); | |
| }); | |
| gulp.task('lint', function() { | |
| return gulp.src(['public/js/lib/**/*']) | |
| .pipe(eslint()) | |
| .pipe(eslint.format()); | |
| }); | |
| gulp.task('less', function() { | |
| return gulp.src('./public/css/*.less') | |
| .pipe(less({ | |
| paths: [ path.join(__dirname, 'less', 'includes') ] | |
| })) | |
| .pipe(gulp.dest('./public/css/')); | |
| }); | |
| gulp.task('build', ['less']); | |
| gulp.task('watch', ['less', 'serve', 'sync'], function() { | |
| gulp.watch('./public/css/*.less', ['less']); | |
| }); | |
| gulp.task('default', ['less', 'serve', 'sync', 'watch']); | |
| function errorNotifier() { | |
| var args = Array.prototype.slice.call(arguments); | |
| // Send error to notification center with gulp-notify | |
| notify.onError({ | |
| title: 'Compile Error', | |
| message: '<%= error %>' | |
| }).apply(this, args); | |
| // Keep gulp from hanging on this task | |
| this.emit('end'); | |
| } |