如何从命令行一次编译多个文件?

How to compile multiple files at once from command line?

我从 lesscss 开始,我不想使用一些 GUI 工具,而只想使用命令行。

我的结构如下

--- 少
--- css

我想将所有less文件编译到css文件夹中。如何做到这一点?

提前致谢!

默认情况下,可以通过 运行ning npm install less 安装的命令行编译器 (lessc) 将单个 Less 文件编译成一个 single.css 文件。

根据您的项目结构和 Less 文件,您应该选择如何编译所有 Less 文件。

当你想将每个 Less 文件编译成一个 CSS 文件时,你可以编写一些命令行脚本来遍历你的文件并通过调用 lessc 编译器编译每个文件。也许你应该更好地考虑使用任务 运行ner 例如 gulp-less 或 g运行t-contribe-less.

在大多数情况下,不同文件中的 Less 代码是相关的,一个文件定义变量和在其他文件中使用的 mixins 等等。对于这种情况,您可以创建一个导入其他文件的 project.less 文件:

project.less:

@import "variable.less";
@import "theme.less";

现在您只需编译 project.less。您可以通过 运行ning lessc project.less project.css 来完成此操作。前面的命令再次将您的 Less 代码编译成单个 CSS。

仅从理论上回答您的问题,当您的 Less 文件不相互依赖并且您只想将它​​们全部编译成一个 CSS 文件时,您可以 运行(在 linux/unix):

paste -s less/*.less | lessc - > css/project.css

我在寻找类似任务的解决方案时发现了这个问题,这是我最后的 shell 编译命令:

ls PATH_TO_LESS/*.less | xargs -I {} echo "printf 'Start compile file {}' &&" node_modules/less/bin/lessc --clean-css --relative-urls {} "{}# && echo ' - DONE'"  | sed 's/\.less#/.css/g' | bash

此命令将所有 less 文件从给定路径编译到相同路径并替换扩展名 "less" => "css".

它有点长,所以如果有必要我可以解释更多。

没有信息日志输出的相同简化命令:

ls PATH_TO_LESS/*.less | xargs -I {} echo node_modules/less/bin/lessc --clean-css --relative-urls {} "{}# | sed 's/\.less#/.css/g' | bash

对我来说,此解决方案的最佳之处在于您可以使用纯 npm 作为任务管理器,而无需任何其他依赖项,例如 gulp 或 grunt。我希望它能帮助某人。

您可以查看 this 文档。不过,我会稍微解释一下。

安装lessc-each

$ npm install -g lessc-each

然后,在命令行中

$ lessc-each  ‹dir1›  ‹dir2›

其中‹dir1›是要编译的Less文件的目录,‹dir2›是输出文件的目录。如果‹dir2›不存在,它会被自动创建。 两个目录必须相对于命令行的当前路径。

参考上面给出的link因为有一些限制也像文件名以双下划线(__)开头的文件名将不会被编译。