2012-02-07 13 views
2

hej私はmavenでプロジェクトをビルドしている間にlesscssファイルをコンパイルすることを考えました。それは*の.lessをループすることが可能ですので、ファントムのスクリプトは、ローカルハードドライブ上の任意のファイルにアクセスすることができlesscssファイルをphantomJSでコンパイルする

<link rel="stylesheet/less" type="text/css" href="styles.less"> 
<script src="less.js" type="text/javascript"></script> 

このようなHTMLファイルのheadセクションでそれらを参照するこれらのファイルをコンパイルすることが可能であるlesscssサイトを見て ファイル。今問題は、それらのファイルをコンパイルし、css拡張子で元に戻す方法です。

同情は、ノードにインストールされた場合にのみ、コマンドラインが利用可能であることである(または??多分私が間違っ)任意のヒントの

おかげ

私はこのスクリプトを作成しただけでなく、それを2回目の試行を与えた後

答えて

0

console.log('*********************************************************************'); 
console.log('executing script ' + phantom.scriptName); 
console.log('phantomJS version ' + phantom.version.major + '.' + phantom.version.minor + '.' + phantom.version.patch); 
console.log('*********************************************************************'); 
console.log('looks for less files under src/main/webapp/* and src/main/resources/*'); 
console.log('to change this pass root directory as script parameter'); 
console.log('example Usage: phantomjs-less.js src/main/resources/css'); 
console.log('*********************************************************************'); 

var root_directory = null; 
if (phantom.args.length !== 0) { 
    root_directory = phantom.args[0]; 
} 

console.log('injecting less script'); 
phantom.injectJs('src/main/webapp/js/less-1.2.2.js'); 

var parser = new(less.Parser); 
var searchLessIn = function(root, fs) { 
    console.log('look for less in ' + root); 
    if (fs.isDirectory(root)) { 
     var files = fs.list(root); 
     for (var index = 2; index < files.length; index ++) { 
      searchLessIn(root + '/' + files[index], fs); 
     } 
    } else { 
     if (root.substr(-5) === '.less'){ 
      parseLess(root, fs); 
     } 
    } 
    console.log('exit ' + root); 
}; 

var parseLess = function(file, fs) { 
    console.log('parse less file : ' + file); 
    var opened = fs.read(file); 
    console.log(opened); 
    parser.parse(opened, function (err, tree) { 
     if (err) { return console.error(err); } 
     console.log(tree.toCSS()); 
    }); 
}; 

var fs = require('fs'); 
console.log('*********************************************************************'); 
console.log('current root directory =' + fs.workingDirectory); 

var root = fs.workingDirectory + '/src/main/webapp/css'; 
console.log('look for less files under ' + root); 

if (!fs.exists(root)) { 
    console.log(root + ' directory doesnt exists') 
    phantom.exit(1); 
} 
searchLessIn(root, fs); 
phantom.exit(0); 

それは

0

試しlesscss Mavenプラグインhttps://github.com/marceloverdijk/lesscss-maven-plugin

を慰めるために解析されたCSSを印刷する必要があります

これはrhinoを使用しているので、100msの代わりに3000msかかるでしょうが、それは動作し、xmlをpom.xmlに入れます。

関連する問題