使用convert-sass是否可以将整个文件夹转换为sass格式?(从scss到sass)

7
我有许多SCSS格式的文件和文件夹。我需要将它们全部转换成SASS格式,并且我知道SASS有一个特定的命令convert-sass来进行转换,然而我不确定是否可以转换整个文件夹(包括内部文件夹)。
如果可以,请告诉我如何使用convert-sass命令进行转换;否则,也许有编译器能够完成这个任务吗?谢谢。

1
你真的需要转换吗?你可以在同一个项目中混合使用Sass和Scss文件。 - cimmanon
1
我更喜欢转换,我想修改所有文件,而且我喜欢整洁(这就是为什么我愿意在最坏的情况下逐个文件进行操作)。 - nerijusgood
如果 convert-sass --help 并没有提供如何做到这一点的信息,你最好的选择就是询问“我该如何在终端上递归地运行一个命令来处理文件目录”。 - cimmanon
这其实是一个很好的想法,如果明天没有人提供更直接的解决方案,我会使用你的!谢谢。 - nerijusgood
2个回答

19

是的,sass-convert 接受一个递归参数。

如果你运行 sass-convert --help 命令,它会给出可用选项的列表。其中之一是:

-R, --recursive      Convert all the files in a directory. Requires --from and --to.

因此,您的命令应该是这样的:

sass-convert -R my_sass_dir --from sass --to scss

4
2020年更新 - Dart Sass(通过npm安装)中没有sass-convert,但我们可以通过安装已弃用的Ruby SASS来访问它 - gem install sass - Jakub Zawiślak
谢谢@JakubZawiślak,我无法通过我的全局NPM使其工作,但是gem install sass对我有用,你救了我的一天。 - Rafael López Dorado
如何在同一命令中删除旧的 SCSS 文件? - Matrix

1
这是一个稍微详细一些的答案:
  1. go to your project subfolder, under which all your styles sit (also, because you want to leave node_modules alone, do you?)

    cd frontend/src

  2. convert in place, as said (consider --indent 4 if that's your indentation style...)

    sass-convert -R . --from scss --to sass --in-place

  3. you almost certainly want to rename all those .scss files to .sass (details)

    find . -name '*.scss' -exec sh -c 'mv "$0" "${0%.scss}.sass"'

  4. In your .js or .jsx files, you want to adjust your import statements.

    find . -name '*.jsx' -print0 | xargs -0 sed -i "s/'\.\(.*\)\.scss'/'.\1.sass'/g"

    More specifically, only your local import statements, starting with a '.', not your global imports, i.e. pointing to node_modules… right?

    Testcase:

    import './style.scss' // should change to .sass
    import './bar.scss'   // should change to .sass
    import 'slick-carousel/slick/slick.scss' // leave me alone!
    

剩余的陷阱包括:

  • 您的webpack.config(加载器!),grunt或gulpfile,仍然匹配.sass
  • 全局“common”导入,您可能会预先添加...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接