   @assets = options.assets
   unless @assets?
     throw new Error "You must specify an 'assets' obj with keys 'js', 'css', or 'jst'"
+  appDir = process.cwd().replace(/\\/g, "\/")
   for key, obj of @assets
-    for pkg, files of @assets[key]
-      files = (glob.sync("#{process.cwd()}/#{file}") for file in files)
-      files = _.uniq _.flatten files
-      files = (file.replace(process.cwd(), '').replace(/^\//, '') for file in files)
-      @assets[key][pkg] = files
-  
+    for pkg, patterns of @assets[key]
+      matches = []
+      for pattern in patterns
+        fnd = glob.sync path.resolve("#{appDir}/#{pattern}").replace(/\\/g, "\/")
+        matches = matches.concat(fnd) 
+      matches = _.uniq _.flatten matches
+      matches = (file.replace(appDir, '').replace(/^\//, '') for file in matches)
+      @assets[key][pkg] = matches
+
   # Config defaults
   @publicDir = options.publicDir ? '/public'
   @mode = options.mode ? do ->

  obj = {}
  
  for filename in @assets[type][pkg]
    contents = fs.readFileSync(process.cwd() + '/' + filename).toString()
    contents = preprocess contents, filename
    
    outputFilename = filename.replace /\.[^.]*$/, '' + '.' + type

  file = "#{process.cwd() + @_outputDir + '/'}#{filename}"
  ext = if _.endsWith filename, '.js' then '.jgz' else '.cgz'
  exec "gzip #{file}", (err, stdout, stderr) ->
    console.log stderr if stderr
    fs.renameSync file + '.gz', file + ext
    writeFile filename, contents
    callback()