2014-05-14 59 views
1

我想让broccolijs使用无花椰菜来编译少量文件的目录。我已经改变了“预处理”的功能如下:用broccolisj编译LESS文件

var compileLess = require('broccoli-less') 
var pickFiles = require('broccoli-static-compiler') 

function preprocess (tree) { 
    tree = filterTemplates(tree, { 
    extensions: ['hbs', 'handlebars'], 
    compileFunction: 'Ember.Handlebars.compile' 
    }) 
    tree = filterCoffeeScript(tree, { 
    bare: true 
    }) 
    tree = compileLess(tree, { 
     compress: false, 
    }) 
    return tree 
} 

在我的项目文件夹中我有一个目录叫“少”,我包括Brocfile.js:

var lessStyles = 'less' 
lessStyles = pickFiles(lessStyles, { 
    srcDir: '/', 
    files: ['main.less'], 
    destDir: 'appkit' 
}) 
lessStyles = preprocess(lessStyles) 

var sourceTrees = [app, styles, vendor, lessStyles] 
if (env !== 'production') { 
    sourceTrees.push(tests) 
} 

sourceTrees = sourceTrees.concat(findBowerTrees()) 

极力打造这一项目产生了错误:

$ broccoli serve 
Serving on http://localhost:4200 


path.js:360 
     throw new TypeError('Arguments to path.join must be strings'); 
     ^
TypeError: Arguments to path.join must be strings 
    at path.js:360:15 
    at Array.filter (native) 
    at Object.exports.join (path.js:358:36) 
    at tryPathIndex (/home/kyrre/beekeeper-frontend/node_modules/broccoli-less/node_modules/less/lib/less/index.js:223:37) 
    at callback.type (/home/kyrre/beekeeper-frontend/node_modules/broccoli-less/node_modules/less/lib/less/index.js:226:29) 
    at Object.oncomplete (fs.js:107:15) 
+0

所以看起来问题与@import语句有关。 – kyrre

回答

1

听起来你可能寻找broccoli-less-single,而不是broccoli-less

自述:

This plugin is designed to compile a single, primary input file into a single output file, with a tree of @importd dependencies. This differs from broccoli-less, which compiles each .less file individually into a .css file and doesn't support @imports or a single output file depending on multiple inputs.

顺便说一句,它看起来像你与Ember.js工作 - 如果是这样,我会强烈建议使用ember-cli,而不是滚动您自己构建流水线。它easily supports less并提供了很多其他功能。