我刚刚开始使用Vue.js + Webpack + vue-loader + bootstrap-sass + sass-loader,我有点迷失。
我想要做的是使用SASS版本的bootstrap和我的SPA Vue.js代码。我想这样做,所以我的引导自定义可以使用SASS完成。这就是我所做的:
在build / webpack.base.conf.js中添加了以下内容:
{ test: /\.scss$/, loaders: [ 'style', 'css', 'sass' ] },
{ test: /\.(woff2?|ttf|eot|svg)$/, loader: 'url', query: { limit: 10000 } }
使用一行创建src / style.scss:@import 'bootstrap';
import './style.scss'
当我现在运行npm run dev
时,我收到以下错误:
ERROR in ./src/main.js
Module not found: Error: Cannot resolve module 'style' in Users/rstuart/Workspace/javascript/kapiche-demo/src
@ ./src/main.js 3:0-25
我不确定为什么这不起作用。
此外,与此问题相关,如何在Vue组件中访问Bootstrap SASS变量?如果我理解这里发生了什么,SASS将被编译为CSS,然后被包含在main.js内联中,这意味着我的组件中无法访问任何Bootstrap变量。有没有办法实现这个目标?
答案 0 :(得分:15)
我自己设法解决了这个问题。我没有尝试直接导入style.scss
,而是完全删除了该文件,并使用以下内容替换了<style>
的{{1}}元素:
App.vue
这还有在Vue组件的样式块中提供Bootstrap变量的额外好处。另外,我完全从 <style lang="sass">
$icon-font-path: "../node_modules/bootstrap-sass/assets/fonts/bootstrap/";
@import '../node_modules/bootstrap-sass/assets/stylesheets/_bootstrap';
.wrapper {
margin-top: $navbar-height;
}
</style>
删除{ test: /\.scss$/, loaders: [ 'style', 'css', 'sass' ] }
,但保留了处理字体的位。 webpacker.base.conf.js
文件的加载程序已经处理了sass。
答案 1 :(得分:2)
我设法以正确的方式工作:
Vue的:
<style lang="sass">
$icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/";
@import "~bootstrap-sass/assets/stylesheets/bootstrap";
</style>
webpack config loader:
{
test: /\.(png|jpg|gif|svg)$/,
loader: 'file-loader',
options: {
name: '[name].[ext]?[hash]'
}
},
{
test: /\.scss$/,
loaders: [ 'style-loader', 'css-loader', 'sass-loader' ]
},
{
test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: "url-loader?limit=10000&minetype=application/font-woff"
},
{
test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: "file-loader"
}
请注意,我使用的是bootstrap-sass
,而不是默认的boostrap
答案 2 :(得分:0)
它正在尝试解析您在webpack.base.conf.js的此部分中指定为加载程序的style
模块:
{ test: /\.scss$/, loaders: [ **'style'**, 'css', 'sass' ] }
鉴于你有一个css和sass加载器,这可能是一个错误的条目,你可以删除以使自己前进。