use the same tasks for production & development build

production state is determined with the NODE_ENV variable from this point forwards
This commit is contained in:
Riku Rouvila
2014-04-05 13:18:27 +03:00
parent b7f1e9255e
commit b224035ef8
2 changed files with 22 additions and 25 deletions

View File

@@ -24,9 +24,16 @@
* npm start * npm start
* Compiles your files, starts watching files for changes, serves static files to port 9001 * Compiles your files, starts watching files for changes, serves static files to port 9001
* npm run build * npm run build
* Builds & minifies everything * Builds everything
Minification, uglification and other tasks you're expected to run before deploying your product can be made by running the build command with env variable NODE_ENV set to "production"
NODE_ENV=production npm run build
## Adding 3rd party libraries ## Adding 3rd party libraries
**Note**: If the package you are looking for can be found in NPM it's much easier to install it from there. After installing packages from NPM they can be required without any of the following instructions.
bower install jquery --save bower install jquery --save
Now to use jQuery in your frontend code, you'll need to add jQuery to "browser" and "browserify-shim" sections of your package.json. Your package.json should be something like this: Now to use jQuery in your frontend code, you'll need to add jQuery to "browser" and "browserify-shim" sections of your package.json. Your package.json should be something like this:
@@ -46,7 +53,7 @@ Now to use jQuery in your frontend code, you'll need to add jQuery to "browser"
Now your should be able to require jQuery in your coffee files Now your should be able to require jQuery in your coffee files
$ = require 'jquery' $ = require 'jquery'
## Development guidelines ## Development guidelines

View File

@@ -18,60 +18,50 @@ plumber = require 'gulp-plumber'
prefix = require 'gulp-autoprefixer' prefix = require 'gulp-autoprefixer'
reloadServer = lr() reloadServer = lr()
compileCoffee = (debug = false) -> production = process.env.NODE_ENV is 'production'
gulp.task 'coffee', ->
bundle = watchify('./src/coffee/main.coffee') bundle = watchify('./src/coffee/main.coffee')
rebundle = -> rebundle = ->
build = bundle.bundle(debug: debug) build = bundle.bundle(debug: not production)
.pipe(source('bundle.js')) .pipe(source('bundle.js'))
build.pipe(streamify(uglify())) unless debug build.pipe(streamify(uglify())) if production
build build
.pipe(gulp.dest('./public/js/')) .pipe(gulp.dest('./public/js/'))
.pipe(livereload(reloadServer)) .pipe(livereload(reloadServer))
bundle.on 'update', rebundle bundle.on 'update', rebundle unless production
rebundle() rebundle()
compileJade = (debug = false) -> gulp.task 'jade', ->
gulp gulp
.src('src/jade/*.jade') .src('src/jade/*.jade')
.pipe(jade(pretty: debug)) .pipe(jade(pretty: not production))
.pipe(gulp.dest('public/')) .pipe(gulp.dest('public/'))
.pipe livereload(reloadServer) .pipe livereload(reloadServer)
compileStylus = (debug = false) -> gulp.task 'stylus', ->
styles = gulp styles = gulp
.src('src/stylus/style.styl') .src('src/stylus/style.styl')
.pipe(stylus({set: ['include css']})) .pipe(stylus({set: ['include css']}))
.pipe(prefix("last 1 version", "> 1%", "ie 8")) .pipe(prefix("last 1 version", "> 1%", "ie 8"))
styles.pipe(CSSmin()) unless debug styles.pipe(CSSmin()) if production
styles.pipe(gulp.dest('public/css/')) styles.pipe(gulp.dest('public/css/'))
.pipe livereload reloadServer .pipe livereload reloadServer
copyAssets = (debug = false) -> gulp.task 'assets', ->
gulp gulp
.src('src/assets/**/*.*') .src('src/assets/**/*.*')
.pipe gulp.dest 'public/' .pipe gulp.dest 'public/'
# Build tasks
gulp.task "jade-production", -> compileJade()
gulp.task 'stylus-production', ->compileStylus()
gulp.task 'coffee-production', -> compileCoffee()
gulp.task 'assets-production', -> copyAssets()
# Development tasks
gulp.task "jade", -> compileJade(true)
gulp.task 'stylus', -> compileStylus(true)
gulp.task 'coffee', -> compileCoffee(true)
gulp.task 'assets', -> copyAssets(true)
gulp.task "server", -> gulp.task "server", ->
staticFiles = new nodeStatic.Server './public' staticFiles = new nodeStatic.Server './public'
require('http').createServer (req, res) -> require('http').createServer (req, res) ->
@@ -88,5 +78,5 @@ gulp.task "watch", ->
gulp.watch "src/stylus/*.styl", ["stylus"] gulp.watch "src/stylus/*.styl", ["stylus"]
gulp.watch "src/assets/**/*.*", ["assets"] gulp.watch "src/assets/**/*.*", ["assets"]
gulp.task "build", ["coffee-production", "jade-production", "stylus-production", "assets-production"] gulp.task "build", ["coffee", "jade", "stylus", "assets"]
gulp.task "default", ["coffee", "jade", "stylus", "assets", "watch", "server"] gulp.task "default", ["build", "watch", "server"]