Express.js + Less:如何正确configuration

我尝试了模块“less”和“less-middleware”。 我尝试了所有教程中find的所有不同的代码片段。 没有可用的文档。 有人可以请解释如何configurationExpress.js和更less,以便更less的正确预编译?!

使用以下问题作为指导:

  1. 你可以使用'less' 模块还是'less-middleware'模块? 什么是官方/支持的方式? 什么是优越?
  2. /public 目录结构应该如何? (你需要的任何特定文件夹?'style'/'less'/'css'?还是由你自己决定?)
  3. 如何configuration您的快速应用程序有关您的目录结构(从问题2)。 (静态文件和编译器选项或更less的中间件,这里什么目录是重要的)
  4. 如何从HTML中引用我的预编译样式表 ? (用.less或.css?什么引用types?什么目录path?)

如果有人可以回答这个问题,那会很好:-)

此解决scheme只适用于快速2.x.

我find了一个解决scheme,希望可以帮助别人:


1.更less或更less的中间件

我使用较less,因为我已经阅读它是官方的端口。 但不知道有什么区别,因为没有可用的文档。

2.目录结构:

你的目录结构并不重要。 但强烈build议有一个公共文件夹来提供所有的静态内容,如JavaScript,Less,CSS或Image文件。

3.应用程序configuration:

你需要两个具体的东西来减less正常工作:

首先是编译较less文件的编译器:

  app.use(express.compiler({ src : __dirname + '/public', enable: ['less']})); 

第二,显示哪里可以find静态文件!

  app.use(express.static(__dirname + '/public')); 

两者都应该指向你的公共文件夹!

4. html

  <link rel="stylesheet" href="/styles/bootstrap.css"> 

直接指向您的公用文件夹中某处的无根文件。

5.less文件

感谢这个答案,我知道什么时候出错了。 less.js中有一种错误 它不会find您在根文件中导入的所有较less的文件。 所以你必须添加正确的path到每个导入!

replace@import "reset.less";@import "/public/styles/reset.less"; 为每一个import你有!

etvoilà… 🙂


感谢所有帮助解决这个问题的人。 也看看韦斯约翰逊的回答。 我认为他有一个非常好的解决scheme,不知何故不适合我…

根据这个答案(我也工作) 。 首先configuration你的app.js

 app.use(require('less-middleware')({ src: __dirname + '/public' })); app.use(express.static(path.join(__dirname, 'public'))); // This is just boilerplate you should already have app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); 

然后,只需将链接添加到less文件,除了将扩展名更改为css 。 喜欢这个,

 <link rel="stylesheet" href="components/bootstrap/less/bootstrap.css" /> 

而且,这将编译components/bootstrap/less/bootstrap.less到CSS并将其提供给您的客户端。

有关如何执行自动缩减等很酷的内容的更多信息,请参阅less-middleware上的文档 。

我从来没有使用过较less的中间件,但我不确定多数应用程序的相关性。 大多数应该可能只是编译前,即:当你启动节点。 可以这样简单:

 var fs = require('fs'), less = require('less'); fs.readFile('styles.less', function(err,styles) { if(err) return console.error('Could not open file: %s',err); less.render(styles.toString(), function(er,css) { if(er) return console.error(er); fs.writeFile('styles.css', css, function(e) { if(e) return console.error(e); console.log('Compiled CSS'); }); }); }); 

目录结构完全是你的偏好。 我将使用express.static服务编译的CSS文件。