【问题标题】:Insert comments with CSScomb (using Sublime Text)使用 CSScomb 插入注释(使用 Sublime Text)
【发布时间】:2015-11-12 14:38:18
【问题描述】:

我的客户要求在代码中有很多 cmets - 包括 css 文件。

于是我想到了用 CSScomb 重新组织 css 代码并自动添加 cmets。这没有意义,但为什么不呢。

所以想法是更改配置文件,其中指出:

[
    "font",
    "font-family"
],
[
    "padding",
    "margin"
]
...

但得到一个输出:

/* FONT STYLE */
font: ....;
font-family: ....;

有什么想法吗?

【问题讨论】:

    标签: css sublimetext prettify


    【解决方案1】:

    DIY群评

    您可以通过编辑 CSScomb 包中的 sort-order.js 文件自行添加此功能。

    1. 打开Sublime Text,从菜单中选择Preferences > Browse Packages…;这将打开 Packages 文件夹。
    2. 从 Packages 文件夹导航到 CSScomb/node_modules/csscomb/lib/options/sort-order.js
    3. 创建此文件的副本以便在您想要恢复更改时进行检索。我将我的副本命名为 sort-order-original.js
      在不同的目录中创建此文件的副本,以便在您想要恢复更改时进行检索。我将副本上移一级到新目录../originals/options/sort-order.js
      注意:如果您只是在现有目录中重命名副本,它可能会被模块包含并运行;因此,将其移至新位置是最安全的。
    4. 在 Sublime Text 中打开 sort-order.js 进行编辑。
    5. Consult this diff for the necessary changes to be made.
      Consult this diff for the necessary changes to be made. (此最新版本添加了新的逻辑,以防止在多次运行 CSScomb 时组 cmet 被复制。)
    6. 如果您对这些更改感到满意,请将其全部复制并粘贴以替换 sort-order.js 的内容。您可以选择进一步编辑以满足您的需要。保存。
      注意:本质上,这些更改扩展了每个排序对象,增加了一个附加属性,该属性包含您在用户设置中可选地提供的 CSS 注释。我会告诉你下一步在哪里添加 cmets。
    7. 现在,您可以按组添加 cmets。从 Sublime Text 菜单中,选择 Preferences > Package Settings > CSScomb > Settings – User。如果您尚未配置自己的设置,可以将Settings – Default 的内容复制到Settings – User 中开始。
    8. 在用户设置文件中,找到"sort-order" 属性。它要么是一个属性名称数组,要么是一个属性名称数组数组。默认情况下,CSScomb 会在嵌套数组组之间添加一个空行,但我们已经修改了执行此操作的文件。
    9. 您现在可以选择添加注释作为任何嵌套数组的第一个属性。 sort-order.js 文件将检测到这一点并将其输出到组的顶部。如果没有定义注释,则输出默认的空行。

    用户设置示例:

    "sort-order": [
        [
            "/* LAYOUT */",
            "position",
            "z-index",
            "top",
            "right",
            "bottom",
            "left"
        ],
        [
            "/* DISPLAY */",
            "display",
            …
            "flex-align"
        ],
        [
            "/* TYPOGRAPHY */",
            "font",
            …
            "line-height"
        ],
        [
            …
        ]
    ]
    

    运行 CSScomb 之前:

    .selector {
        font-family: Arial;
        line-height: 1;
        position: relative;
        display: block;
        background-color: red;
    }
    

    运行 CSScomb 后:

    .selector {
    
        /* LAYOUT */
        position: relative;
    
        /* DISPLAY */
        display: block;
    
        /* TYPOGRAPHY */
        font-family: Arial;
        line-height: 1;
    
        background-color: red;
    }
    

    【讨论】:

    • 非常好,非常感谢!最后一个问题:如果我启动它两次...它将再次添加这些 cmets...任何解决方案?
    • 不在此实现中。但是您可以使用sort-order.js 或其他 lib 文件来查看有关为重复 cmets 添加某种逻辑检查的信息。
    • 好的,我已经尝试了 2 天来寻找自制的解决方案,但我被卡住了。这意味着您的解决方案只能在编译结束时应用一次 - 所以我的整个想法(不是您的解决方案)变得无用......
    • 我会为您发布解决方案。 ;) 待命。
    • @YannickHelmut 我已经更新了我的答案。查看最新的差异,它添加了新的逻辑以防止在多次运行 CSScomb 时组 cmets 被复制。享受吧!
    猜你喜欢
    • 2018-11-23
    • 2017-02-20
    • 1970-01-01
    • 2014-11-12
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    相关资源
    最近更新 更多