javascript.coffee | |
---|---|
CSS ExtensionThis extension defined Package and Source subclasses specific for javascript files. This barely implies defining specific classes properties and the compression behavior on the Package subclass. | {Package, Source} = require '..'
{finished, debug} = require '../command' |
Package is subclassed by providing the required class properties | class JavascriptPackage extends Package
@type = 'javascript'
@aliases = ['js']
@compressedext = '.min.js'
@ext = '.js'
requiredModules: ->
[super()..., 'uglify-js']
|
This method complies to the convention required by the | compressFile: (original, dest, cb) ->
compress = (data, cb) ->
{parser, uglify} = require 'uglify-js'
{gen_code, ast_squeeze, ast_mangle} = uglify
cb null, gen_code ast_squeeze parser.parse data
original.project dest, compress, (err) ->
cb err if err
finished 'Compressed', original.fullpath
cb()
|
Source is subclassed by providing, again, the required class properties | class JavascriptSource extends Source
@type = 'javascript'
@aliases = ['js']
@ext = '.js'
@header = /^\/\/\s*import\s+([a-zA-Z0-9_\-\,\.\[\]\{\}\u0022/ ]+)/m
Source.extend JavascriptSource
Package.extend JavascriptPackage |
Thumbs up if you noticed these docs are pretty much copy-pasted from css.coffee! :) | |