Sass SCS从@import切换到@use:undefined mixin
多年来,我一直对@import非常满意,但有时,它们正在改变 因此,我尝试将我的项目从@import转移到@use和@forward,我发现非常有用。但是当我尝试在我的部分中实现@use时,我总是得到一个“未定义的mixin”。我想我可能误解了@use的工作方式,但我实在想不出哪里出了问题。我已经到了我只想爬下一座教堂的塔楼开始向人们开枪的地步。。。这也无助于我集中注意力;) 因此,我将其全部剥离为非常基本的代码块,以便在“实验室条件”下检查问题。以下是我得出的结论: 文件夹和文件:Sass SCS从@import切换到@use:undefined mixin,sass,undefined,scss-mixins,Sass,Undefined,Scss Mixins,多年来,我一直对@import非常满意,但有时,它们正在改变 因此,我尝试将我的项目从@import转移到@use和@forward,我发现非常有用。但是当我尝试在我的部分中实现@use时,我总是得到一个“未定义的mixin”。我想我可能误解了@use的工作方式,但我实在想不出哪里出了问题。我已经到了我只想爬下一座教堂的塔楼开始向人们开枪的地步。。。这也无助于我集中注意力;) 因此,我将其全部剥离为非常基本的代码块,以便在“实验室条件”下检查问题。以下是我得出的结论: 文件夹和文件: style
styles.scss
├── a_tools
│ └── _mixins.scss
├── b_settings
│ └── _global.scss
└── c-components
└── _test.scss
_mixins.scss:
@use '../b_settings/global' as *;
@function bp($bp) {
@return ($breakpoints, $bp);
}
@mixin vp-medium {
@media (min-width: #{breakpoints(small) + 1}) and (max-width: #{breakpoints(medium)}) {
@content;
}
}
_gobal.scss:
$breakpoints: (
'small': 767px,
'medium': 1024px,
'navigation': 840px,
);
:root {
--vp-name: small;
}
@include vp-medium {
:root {
--vp-name: medium;
}
}
_test.scss:
@use 'a_tools/mixins' as *;
@use 'b_settings/global' as *;
.test {
margin: 10px;
@include vp-medium {
margin: 20px;
}
}
styles.scss:
@use 'c_components/test';
编译会不断在_global.scss的第1列第15行抛出“undefined mixin”,这是一行“@include vp medium{”。使用Dart Sass 1.32.8编译
谁能告诉我哪里走错了路?提前谢谢!因为我理解新规则
@使用的方式,你必须@使用所需的文件,并将所需的混入到你想使用的每个文件中
如果我真的把它弄好了:
您在test.scss
中使用了文件mixinvp medium
但是您没有在global
中使用相同的文件,您也希望在其中使用mixin。只需尝试@将该文件也使用到global
其他:
我们在这里进行了类似的讨论:Mate,这似乎是个问题!非常感谢!我必须让我的大脑思考这样一个事实,即你不能再构建“导入链”。就我个人而言,我一点也不喜欢这种新方法,它解决了我从未遇到的问题,并迫使我编写更多代码。但至少我终于让它工作起来了。再次感谢!)