werkzeug
Version:
compiles ts, coffee, sass/scss, less/ stylus and packs browser ready bundles
86 lines (64 loc) • 2.35 kB
text/coffeescript
Less = require 'less'
FS = require 'fs'
FSE = require 'fs-extra'
Path = require 'path'
PH = require '../utils/path-helper'
IPC = require '../utils/ipc'
Log = require '../utils/log'
class LessCompiler
constructor: () ->
= false
= null
= null
= 0
= new IPC(process, @)
init: () ->
null
compile: (files) ->
= []
for file in files
file
null
compileFile: (file) ->
path = file.path
++
FS.readFile path, 'utf8', (error, source) =>
if error
.push
path: path
error: 'file read error'
else
outPath = PH.outFromIn , 'less', path, true
mapPath = outPath + '.map'
options =
filename: Path.relative Path.dirname(outPath), path
compress: true
sourceMap:
sourceMapURL: Path.basename mapPath
sourceMapBasepath: ''
sourceMapRootpath: ''
outputSourceFiles: false
sourceMapFileInline: false
Less.render source, options, (error, result) =>
++
if error
.push
path: error.filename
line: error.line
col: error.column + 1
error: error.message
else
cssSrc = result.css
mapSrc = result.map
if mapSrc
FSE.ensureFileSync mapPath
FS.writeFileSync mapPath, mapSrc, 'utf8'
FSE.ensureFileSync outPath
FS.writeFileSync outPath, cssSrc, 'utf8'
() if -- == 0
() if -- == 0
null
compiled: () ->
= true
.send 'compiled', 'less',
module.exports = new LessCompiler()