UNPKG

grill

Version:
106 lines (82 loc) 3.75 kB
module.exports = Grill = # # Modules # Assetter: require './grill/assetter' Bower: require './grill/bower' Server: require './grill/server' # # Suite-level settings that can be used to use grill as # building platform for other frameworks or toolbelts # settings: prefix: 'grill' # prefixes all grunt tasks fith this assets: vendor: ['app/*', 'vendor/*'] # vendor paths to grab assets from destination: 'public' # directory containing static build output server: port: 4000 # default local server port testPort: 4001 # default test server port # # Factories # assetter: (grunt, environment) -> paths = grunt.util._([ Grill.settings.assets.vendor, Grill.config(grunt, 'assets.paths') ]).flatten() paths = grunt.util._(paths).compact() new Grill.Assetter grunt, grunt.file.expand(paths), Grill.config(grunt, 'assets.destination') ? Grill.settings.assets.destination, Grill.config(grunt, 'config'), Grill.config(grunt, 'mincer'), environment server: (grunt) -> new Grill.Server grunt config: (grunt, key) -> grunt.config.get "#{Grill.settings.prefix}.#{key}" # # Setup routine # setup: (grunt, settings={}) -> Grill.settings[key] = value for key, value of settings grunt[Grill.settings.prefix] = assetter: (environment) => @assetter grunt, environment server: => @server grunt grunt.registerTask "#{Grill.settings.prefix}:bower", -> Grill.Bower.install grunt, @async() grunt.registerTask "#{Grill.settings.prefix}:server", ["#{Grill.settings.prefix}:server:development"] grunt.registerTask "#{Grill.settings.prefix}:server:development", -> @async() assetter = Grill.assetter(grunt, 'development') server = Grill.server grunt port = Grill.config(grunt, 'server.port') ? Grill.settings.server.port server.start port, (express) -> server.serveMiddlewares express, Grill.config(grunt, 'middlewares') server.serveProxied express, Grill.config(grunt, 'proxy') server.serveAssets express, assetter, Grill.config(grunt, 'assets.greedy') grunt.registerTask "#{Grill.settings.prefix}:server:test", -> assetter = Grill.assetter(grunt, 'test') server = Grill.server grunt port = Grill.config(grunt, 'server.testPort') ? Grill.settings.server.testPort server.start port, (express) -> server.serveAssets express, assetter, Grill.config(grunt, 'assets.greedy') grunt.registerTask "#{Grill.settings.prefix}:server:production", -> @async() server = Grill.server grunt port = process.env['PORT'] ? (Grill.config(grunt, 'server.port') ? Grill.settings.server.port) server.start port, (express) -> server.serveStatic express, Grill.config(grunt, 'assets.destination') ? Grill.settings.assets.destination, true grunt.registerTask "#{Grill.settings.prefix}:compile", ["#{Grill.settings.prefix}:compile:development"] grunt.registerTask "#{Grill.settings.prefix}:compile:development", -> Grill.assetter(grunt, 'production').compile( Grill.config(grunt, 'assets.root'), Grill.config(grunt, 'assets.skip') || [], error: (asset, msg) -> grunt.fail.fatal msg compiled: (asset, dest) -> grunt.log.ok "Compiled #{dest}" ) grunt.registerTask "#{Grill.settings.prefix}:compile:production", -> grunt.task.run("#{Grill.settings.prefix}:compile:development") if process.env['NODE_ENV'] == 'production' grunt.registerTask "#{Grill.settings.prefix}:clean", -> grunt.file.delete 'public' if grunt.file.exists('public')