【问题标题】:compiling lesscss files by phantomJS通过phantomJS编译lesscss文件
【发布时间】:2012-02-07 22:49:29
【问题描述】:

hej 我想在使用 maven 构建项目时编译 lesscss 文件。 查看lesscss站点,可以像这样在html文件的head部分编译引用它们的文件

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

phantom 的脚本可以访问本地硬盘上的任何文件,因此应该可以循环遍历 *.less 文件。现在的问题是如何编译这些文件并使用 css 扩展名保存它们。

遗憾的是,命令行仅在安装到节点时可用(或者我可能错了??)

感谢任何提示

【问题讨论】:

    标签: less phantomjs


    【解决方案1】:

    在第二次尝试之后,我创建了这个脚本

    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);
    

    它应该将解析后的 css 打印到控制台

    【讨论】:

      【解决方案2】:

      试试lesscss maven插件https://github.com/marceloverdijk/lesscss-maven-plugin

      它使用 rhino,所以它需要 3000 毫秒而不是 100 毫秒,但它可以工作,你只需将一些 xml 放入 pom.xml 中

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-13
        • 1970-01-01
        • 2019-01-19
        • 2017-02-06
        • 1970-01-01
        相关资源
        最近更新 更多