有没有一种方法可以在SCSS中扩展Bootstrap类,而不必导入Bootstrap本身?

roqulrg3  于 2023-10-14  发布在  Bootstrap
关注(0)|答案(1)|浏览(159)

我在sample.scss文件中定义了以下自定义类。

.custom-class {
    @extend .rounded-pill;
    @extend .border;
    @extend .bg-light;
}

当我编译代码时,我得到以下错误
留言原文:找不到目标选择器。使用“@extend .rounded-pill!可选”以避免此错误
将其更改为@extend .rounded-pill !optional,使错误消失。但是,.rounded-pill.border.bg-light不会根据需要导入/应用到custom-class。有没有一种方法可以扩展bootstrap CSS类,而不必直接将bootstrap类导入到我的项目中?
我们的想法是包含bootstrap的CDS并定义自己的类来扩展bootstrap。
如果我添加@import ../node_modules/bootstrap/scss/bootstrap';一切工作,但引导代码导入到我的文件,我不想。

更新

为了澄清,这里有一个我想完成的示例,
下面的代码在custom-close.scss文件中。编译时,下面的SCSS代码应该会生成一个名为custom-close.css的新CSS文件。

@import ../node_modules/bootstrap/scss/_close';
@import ../node_modules/bootstrap/scss/_buttons';

.custom-close {
    @extend .btn;
    @extend .btn-close;
    padding: 0;
}

如您所见,我正在从Bootstrap模块导入_close.scss_buttons.scss文件。
但是,导入_close_buttons会导致_buttons_close文件中的所有代码都包含在最终文件(即custom.css)中。

eanckbw9

eanckbw91#

你不能@extend一些东西而不导入它。
不知道你说的“引导代码被导入到我不想要的文件中”是什么意思,但我可以向你保证它没有缺点。事实上,无论何时你导入Bootstrap的CSS,无论是预编译的还是SCSS,你都是在“将Bootstrap的代码导入到你的文件中”。
以下是how to customise Bootstrap的官方文档。
若要覆盖任何默认值,请在从Bootstrap导入它们之前定义它们的值。
要使用Bootstrap @mixins,您必须从Bootstrap导入它们。别无他法
您所要求的相当于希望在代码中使用一个包而不导入它。
进一步澄清后,似乎 “引导代码导入到我的文件中” 您的意思是 “引导代码包含在我的构建中”。要从包中排除任何依赖项,请将该依赖项声明为external。每个构建工具(rollupwebpackvite)都有自己特定的语法。它们很相似。
为了让使用你的包的项目知道它需要一个特定的其他包才能让你的包工作,你还必须在你的package.jsonpeerDependencies中声明这个依赖项。这将在控制台中自动生成一个警告,任何项目安装您的软件包时,其项目中没有安装您的对等依赖项的兼容版本。
作为一个旁注,你should change你的进口到:

@use 'bootstrap/...'

相关问题