如何在grunt-sass中使用函数?

时间:2018-03-06 08:50:22

标签: sass gruntjs node-sass

我当前的项目使用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

1 个答案:

答案 0 :(得分:2)

函数必须返回SassValue对象。

不幸的是,我认为单独使用grunt-sass是不可能的,因为我们需要将返回的数字43包装在{{1}中定义的键入函数中(node-sass不公开...)。

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

此处,4是node-sass导入SassValue,在grunt中不可用...