从命令行使用时,node-sass的文档肯定有点简单。我目前对使用NPM脚本作为构建工具感兴趣。
我有一个项目,其中包含按功能组织的许多组件。每个功能都是一个单独的文件夹有较大的组件包含较小的组件,其中任意数量的组件都有自己的.scss
文件。
我遇到的问题是文档并不清楚如何使用node-sass将所有这些文件轻松编译为一个文件。
有一种方法可以从一个目录编译.scss
文件并放入另一个目录,但这会将它们保存为单个文件。还有一个建议是使用cat cat <input> | node-sass > <output>
,但cat
不是递归的,也不使用globs,所以你得到的最多就是一个级别的css。
有没有办法使用node-sass这样它可以递归查看给定目录的所有文件并将它们编译成单个css样式表?
答案 0 :(得分:0)
到目前为止,我发现的最佳方式有点迟钝。
使用find
以递归方式查找所有正确的文件,然后输出到cat
,将所有这些放在一起,最后输出到node-sass
并输出到最终文件。< / p>
find src/apps/section -name '*.scss' -print0 | xargs -0 cat | node-sass > ./dist/css/section.css
理想情况下,node-sass应该接受一个glob并对其结果进行操作,但它还不够成熟,或者团队并不专注于创建此功能。 IMO,任何类型的编译器,无论是用于html模板,JS转换还是缩小,还是应该能够接受glob并输出单个文件的任何东西。看起来不是一个优势......但我知道什么。
Node-sass确实有一个递归选项,但是当前的文档说这只是用于观看。关于此选项有一个discussion,但有一些原因说明多文件编译不是目标功能(源图等)。 :/
我个人希望让更多工具拥有更好或更高级的文件处理功能,让我将所有观看时间委托给像npm-script-watcher
这样的单一脚本。它会监视并触发脚本。一次文件更改可以触发单次运行lint,构建和测试。它似乎比linter的观察者标志,构建器的观察者标志和测试器的观察者更好,然后为每个重复脚本,以防我只想运行lint,构建或测试一次而不启动其监视功能。 / p>