【问题标题】:How to use functions in grunt-sass?如何在 grunt-sass 中使用函数?
【发布时间】:2018-03-07 08:42:57
【问题描述】:

我当前的项目使用 grunt-sass 将 scss 文件翻译成 css。 根据 grunt-sass 文档,我可以使用 node-sass 提供的任何选项,除了少数几个:

选项

查看 node-sass 选项,除了 file、outFile、success、error。

我的项目从一个 SCSS 文件中编译出两个 CSS 文件。 SCSS 文件中有 if 语句,根据版本变量的值($bootstrap-version: 3; 或 $bootstrap-version: 4;)提供不同的代码。

我想使用 node-sass 选项 functions 将引导版本返回到我的 SCSS 文件。

这是我的 gruntfile。 functions: {...} 路径是我期望该选项起作用的方式。

// Compile Sass
sass: {
bootstrap3: {
    options: {
      style: 'expanded'
      functions: {getBootstrapVersion: function(){return 3;}}
    },
    files: {
      'dist/bootstrap3/css/my-bs3-variation.css': './bootstrap3/scss/my-bs3-variation.scss'
    },
},
bootstrap4: {
    options: {
      style: 'expanded',
      functions: {getBootstrapVersion: function(){return 4;}}
    },
    files: {
      'dist/bootstrap4/css/my-bs4-variation.css': './bootstrap4/scss/my-bs4-variation.scss'
    }
}

在 SCSS 文件中,我这样调用函数:

$bootstrap-version: getBootstrapVersion();

h1:before {
    content: "Bootstrap " + $bootstrap-version + " Version of ";
}

但是,在尝试编译它时,我在调用函数的那一行得到了错误 >> Error: error in C function getBootstrapVersion: A SassValue object was expected.

node-sass 文档中的示例对我没有多大帮助。我做错了什么?或者有没有更好的例子我只是没有找到?

我使用 grunt-sass 2.0.0 版和 node-sass 4.7.2 版

【问题讨论】:

    标签: sass gruntjs node-sass


    【解决方案1】:

    函数必须返回一个SassValue 对象。

    不幸的是,我认为单独使用 grunt-sass 是不可能的,因为我们需要将返回的数字 43 包装在 node-sass 中定义的键入函数中(grunt-sass 确实如此不暴露...)。

    例如,使用 javascript 中的 node-sass,可以使用类似 sass.types.Number(4) 的内容将 4 声明为数字 SassValue

    这里,sass 是 node-sass 导入 const sass = require('node-sass');,在 grunt 中是没有的...

    【讨论】:

    • 谢谢 miir,知道在 grunt-sass 中这是不可能的,这已经很有帮助了!不过,grunt-sass 可能需要更新其文档中的选项部分。我会尝试联系他们。
    猜你喜欢
    • 1970-01-01
    • 2015-09-05
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多