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

时间:2015-01-26 23:17:14

标签: command-line compilation less

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

我的结构如下 根
---少了 --- css

我想将所有较少的文件编译到css文件夹中。怎么做到这一点?

提前致谢!

3 个答案:

答案 0 :(得分:3)

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

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

当您想将每个Less文件编译成CSS文件时,您可以编写一些命令行脚本来迭代您的文件并通过调用lessc编译器来编译每个文件。可能你最好考虑使用一个任务运行器,例如gulp-less或grunt-contribe-less。

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

project.less:

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

现在你必须只编译project.less。您可以通过运行lessc project.less project.css来执行此操作。上面的命令再次将Less代码编译为单个CSS。

回答你的问题只是理论问题,当你的Less文件不依赖于彼此而你只想将它们全部编译成一个CSS文件时,你可以运行(在linux / unix上):

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

答案 1 :(得分:2)

您可以浏览this doc。虽然,我会解释一下。

安装$ npm install -g lessc-each

$ lessc-each  ‹dir1›  ‹dir2›

然后,在命令行中

ctx.filter

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

请参阅上面给出的链接,因为还有一些限制,例如文件名,因为文件名以双下划线(__)开头不会被编译。

答案 2 :(得分:0)

我找到了这个问题,当我寻找类似任务的解决方案时,这是我最后的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" => " 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这样的任何其他依赖。我希望它有所帮助。