【问题标题】:@import directory statement in less@import 目录语句在less
【发布时间】:2014-09-18 09:21:18
【问题描述】:

我现在的less组织如下:

styles/pages/page1/index.less
styles/pages/page1/tab1.less
...
styles/widgets/widget1.less
styles/widgets/widget2.less
...
styles/tools/partials.less
...
styles/app.less

我的整个 app.less 文件都是 @import 语句,用于将所有其他部分纳入其中。

@import "tools/partials";
@import "widgets/widget1";
@import "widgets/widget2";
@import "pages/page1/index";
@import "pages/page1/tab1";
//...

这些语句是手动维护的,这很糟糕。有没有更好的办法?

我梦想着这样的事情:

@import "tools/partials";
@import "widgets/*";
@import "pages/**/*";

也许某种脚本可以在编辑器级别处理这个问题(使用 WebStorm)?或者也许是 less 编译器本身的某种插件?

现在我在我的应用程序中通过 express 中间件提供的文件较少,但如果那里有解决方案,我可以轻松切换到 grunt。

【问题讨论】:

    标签: express gruntjs less webstorm


    【解决方案1】:

    看看grunt-less-imports。它根据您的文件维护一个导入文件(在您的情况下为app.less)。

    这是我在最近的项目中使用它的方式。我有一堆更少的文件,像这样:

    我像这样使用grunt-less-imports (gruntfile.js):

    less_imports: {
            options: {
                banner: '// Compiled stylesheet'
            },
            styles: {
                src: ['<%= config.app %>/assets/less/**/*.less', '!<%= config.app %>/assets/less/styles.less'],
                dest: '<%= config.app %>/assets/less/styles.less'
            }
        },
    

    此任务通过导入创建 styles.less

    因此,您只需添加-删除您的 less 文件,然后执行导入它们的工作。是你要找的吗?

    更新

    如果您的导入文件需要更多结构,您可以获取一些。例如,我有两个文件较少的文件夹,page-frame-blockspopups,并希望先导入它们:

    less_imports: {
            options: {
                banner: '// Compiled stylesheet'
            },
            styles: {
                src: [
                    '<%= config.app %>/assets/less/page-frame-blocks/*.less',
                    '<%= config.app %>/assets/less/popups/*.less',
                    '<%= config.app %>/assets/less/*.less',
                    '!<%= config.app %>/assets/less/styles.less'],
                dest: '<%= config.app %>/assets/less/styles.less'
            }
        },
    

    现在我的导入文件如下所示:

    要先导入popups 样式吗?只需将其移至src 部分的顶部即可。您明白了 - 您可以使用 grunt globbing 模式明确说出您想要哪些文件夹以及按什么顺序。

    【讨论】:

    • 我知道我可以做这样的事情。问题是,您如何维护进口订单?例如。 Tools.less 必须在 page1.less 之前导入?
    • grunt-less-imports 的作者在这里。谢谢你的提及。如果有什么遗漏,请在 Github 上的 issue 中告诉我。
    • @MarcDiethelm 我的 dest 文件在成功运行后为空(完成,没有错误)。这是在我的文件部分:'core/less/theme.less': ['core/less/theme/**/*.less'] 当然文件夹中有 .less 文件。你能想到点什么吗?
    • @YoniLevy 嗨,你能在 Github 上为此打开一个问题吗?在评论部分帮助你是不切实际的。但是我已经看到的是,您的 globbing 模式以递归方式包含输出。 github.com/MarcDiethelm/grunt-less-imports/issues
    猜你喜欢
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多