-
Notifications
You must be signed in to change notification settings - Fork 0
/
less-compiler.coffee
49 lines (41 loc) · 1.81 KB
/
less-compiler.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
path = require 'path'
fs = require 'fs'
less = require 'less'
module.exports = compiler =
fromSource: (src, opts..., callback) ->
opts = opts[0] or {}
parserOpts = {}
toCssOpts = {}
parserOpts.filename = opts.filename or 'less-compiler'
parserOpts.paths = opts.paths or [path.dirname parserOpts.filename]
# toCssOpts.writeSourceMap = opts
toCssOpts.cleancss = opts.cleancss
toCssOpts.compress = opts.compress
toCssOpts.ieCompat = opts.ieCompat
toCssOpts.maxLineLen = opts.maxLineLen
toCssOpts.outputSourceFiles = opts.outputSourceFiles
toCssOpts.silent = opts.silent
toCssOpts.sourceMap = opts.sourceMap
toCssOpts.sourceMapBasepath = opts.sourceMapBasepath
toCssOpts.sourceMapFilename = opts.sourceMapFilename
toCssOpts.sourceMapOutputFilename = opts.sourceMapOutputFilename
toCssOpts.sourceMapRootpath = opts.sourceMapRootpath || ''
toCssOpts.sourceMapURL = opts.sourceMapURL
toCssOpts.strictMath = opts.strictMath
toCssOpts.strictUnits = opts.strictUnits
toCssOpts.verbose = opts.verbose
# optimization: options.optimization,
# rootpath: options.rootpath,
# relativeUrls: options.relativeUrls,
# strictImports: options.strictImports,
# dumpLineNumbers: options.dumpLineNumbers
parser = new less.Parser parserOpts
parser.parse src, (err, tree) ->
css = tree.toCSS toCssOpts
callback err, css
fromFile: (filepath, opts..., callback) ->
opts = opts[0] or {}
opts.filename ?= filepath
fs.readFile filepath, 'utf8', (err, src) ->
return callback err if err?
compiler.fromSource src, opts, callback