使用 Express 减少中间件

Less Middleware with Express

我试图在我的 nodejs 项目上设置更少,当我从浏览器请求我的页面时 less-middleware 调试显示错误的路径和目标路径。当我从我的网页询问例如 '/public/css/index.css' 时,我将 '/public/css/' 添加到源路径。以下是我的配置:

app.use(lessMiddleware(__dirname+'/server/less',{
    debug: true,
    dest: __dirname+'/public/css',
    once: true
}));

调试屏幕显示:

pathname : /public/css/index.css
source : D\Work\project\server\less\public\css\index.less
destination : D\Work\project\public\css\public\css\index.css

即使我修复了目标路径,我的源也有问题,我不想将我的 less 文件放入 public 文件夹。有没有办法从 less 编译中删除 /public/css。 我尝试添加:

'preprocess.path': function(pathname, req){
    console.log(pathname);
}

console.log 从未显示。也许还有一种方法可以不编译用户询问的每个 css 文件,而只编译我在 less 文件夹中的那些 less 文件。
P.S。我使用的每个模块都低于 "*" 版本。

您可以试试这个(在您的浏览器中访问“/css/style.css”):

app.use(lessMiddleware({
  src: __dirname+"/server/less",
  dest: __dirname+"/public/css",
  prefix: "/css",
  // force true recompiles on every request... not the
  // best for production, but fine in debug while working
  // through changes
  force: true,
  debug: true
}));

其实很简单。

app.use(lessMiddleware(__dirname+'/server/less/',{
    debug: true,
    dest: __dirname,
    force: true
}));

现在我们在文件夹 /server/less 中创建了文件夹 public/css,一切都在正确的方向进行。此外,如果我们有文件夹 admin/css,它也可以工作。技巧是在文件夹 /server/less

中创建文件夹