Giles wants you to stop writing HTML, CSS, and JS.
Giles is a static asset builder for a variety of useful markup languages. Use Giles to develop with nextgen web tools and increase project momentum.
##Giles supports
- CoffeeScript - Incredible javascript compiler. Everything just seems to work better with coffeescript.
- Stylus - Fantastic css compiler. The variable/mixin support is extremely powerful.
- Jade - Cool HAML-like alternative to writing html.
- Your favorite language. Add it and issue a pull request.
###Giles is a command line tool and API for:
- Developing. Watch a directory using the
giles -s
command, and build files as they are requested. - Releasing. Building static assets for deployment
The goal of Giles is not to advocate a specific framework, rather to provide developers and designers functionality in the languages of their choice.
###To install run
sudo npm install -g giles
npm is available by installing nodejs
giles
It will build every file into the same directory(views/index.jade will become views/index.html)
###To get help
giles -h
If you ever need to run this, file a bug with me.
###To ignore a directory, or multiple(will match recursively)
giles --ignore vendor,bin
ignore defaults to node_modules,.git
###To start a webserver on port 9000
giles -s -p 9000
-p is optional, and will default to 2255 if not specified
###Environments are now supported. Environments are shortcuts that allow you to treat compilations differently. The built-in enviroments are dev and prod . giles defaults to development if nothing is specified.
giles <dir> -e prod
Compile assets in in production mode. Jade assets (and all compiled types that support local variables) can contain tests for the environment:
- if(production)
#prodOnly content
or
- if(environment == 'production')
#prodOnly content
#API These examples are in coffeescript.
srcDir = PATH_TO_SOURCE
options = {}
giles = require('giles')
giles.build(srcDir, options)
giles = require('giles')
giles.server(dir, {port : 12345})
Try it for a lightweight development mode
connect.use(giles.connect(srcDir))
This connector will compile supported file types (index.jade will be compiled when index.html is requested). It does not serve any files.
It is imperative that you place this before `connect.static'
By default giles creates a 1-1 map of template to generated page. This allows you to use the same jade file with separate variables to generate a dynamic page that is built into a finite amount of static targets.
#This generates static files with the output file dynamicPage.html
#locals is a list of variables available
#to the .jade file when running this action
locals = {name : "Martyn"}
giles.get '/dynamicPage.html', 'page.jade', locals
Then in page.jade
!!!
head
title = name
coffee = require 'coffee-script'
giles.addCompiler ['.coffee', '.cs'], '.js', (contents, filename, output) ->
output(coffee.compile(contents, {}))
stylus = require 'stylus'
giles.addCompiler [".styl", ".stylus"], '.css', (contents, filename, output) ->
stylus.render contents, {filename: filename}, (err, css) ->
if err
console.error "Could not render stylus file: "+filename
console.error err
else
output(css)
Both of these compilers are already in giles and listed here for illustration purposes.
#Changelog
- Added markdown
- Fixed a bug in coffeescript generation
- Added -v flag to output version number
- Added -e flag for environments
- Documentation slightly updated
- Added
giles.get("/route", sourceFile, locals)
for defining generated files - Added -s option which tells giles to start a webserver on port 2255
- Added -p option to specify port of -s
- Removed -w option, -s works better and more consistently
###License Giles is available under the MIT license. We hope you find it useful. Please let us at 255 BITS know if you use it for something cool.
Into every generation a slayer is born: one girl in all the world, a Chosen One. One born with the strength and skill to fight the vampires, to stop the spread of their evil and swell of their numbers.