如何从命令行一次编译多个文件?
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因为有一些限制也像文件名以双下划线(__)开头的文件名将不会被编译。
我从 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因为有一些限制也像文件名以双下划线(__)开头的文件名将不会被编译。