【问题标题】:Concatenate/Merge css files in order按顺序连接/合并css文件
【发布时间】:2015-09-22 03:11:02
【问题描述】:

在 libsass 的帮助下,我在 css/ 文件夹中生成了一堆不同的 css 文件。此外,我确实已经将 normalize.css 放在了 css/ 文件夹中,以允许在所有浏览器中对 css 进行规范化。我使用 npm 作为构建工具,我的 package.json 包含如下内容:

{
.....
"scripts": {
    "test": "npm run lint",
    "lint": "csslint css/*.css",
    "build": "node-sass sass/ -o css/",
    "postbuild": "cat css/*.css | cleancss -o css/main.min.css"
  },
.....
}


在构建步骤中,我正在生成 css 文件,在构建后步骤中,我将所有 css 文件连接到一个缩小的 css 文件中。

但是在构建后步骤中,normalize.css 文件的内容应该在任何其他 css 文件内容之前,但是行为不一致。我需要确保规范化的东西先于所有其他 css 文件,任何提示都会有所帮助。


Tldr- 一堆 css 文件的串联导致 normalize.css 被附加在中间或最后。我在连接开始时需要它 css 文件。

谢谢。

【问题讨论】:

    标签: bash css npm concatenation


    【解决方案1】:

    只需使用ls-I option 即可将normalize.css 排除在列表之外:

    cd css/ && cat normalize.css `ls -I normalize.css -I main.min.css` | cleancss -o main.min.css
    

    【讨论】:

    • cat 是否按文件名的字母顺序显示文件?
    • @AbhinavGauniyal 不,cat 使用其参数的顺序,所以这里首先是normalize.css,然后是ls 的顺序,默认情况下是按字母顺序。 (见stackoverflow.com/questions/878249/unixs-ls-sort-by-name)。但是,如果您发现情况并非如此,请使用ls -I normalize.css *.css | sort
    • 好吧...ls -I normalize.css *.css 即使在终端中也会提供包括normalize.css 在内的所有css 文件,因此违背了整个目的。请你看一下。
    • 你说得对,它似乎只在对文件夹调用 ls 时才有效。您的 css/ 目录中应该只有 css 文件,所以我相信我刚刚所做的编辑应该可以工作。 (顺便说一句,到目前为止,您一直在将 main.min.css 重新连接到自身中)
    • @EricRenouf 是的,我已经意识到 OP 的评论,因此进行了编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 2018-10-31
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 2015-03-13
    • 2018-11-13
    相关资源
    最近更新 更多