我有同样的问题与@material和Vue公司。我设法解决了这个问题,而没有直接调整use
属性。
解决方案
步骤1:一是使用CLI创建一个默认的Vue 2.1项目。 你的文件结构将有一个./build
目录。
步骤2:打开文件“utils的”你会看到一个cssLoaders()
函数返回该语言vue-loader
支撑的物体/地图。
你会看到在地图都sass
和scss
。
步骤3:更改的sass
和值scss
:
sass: generateLoaders('sass', {
indentedSyntax: true,
includePaths: [path.resolve(__dirname, '../node_modules')]
}),
scss: generateLoaders('sass', {
includePaths: [path.resolve(__dirname, '../node_modules')]
}),
步骤4:转到您所使用的.vue文件并在<style>
元素改变lang
属性要么是sass
要么是scss
。
步骤5:当你已经做了去了终端/主机并安装sass-loader
有:
NPM安装青菜装载机节点萨斯的WebPack --save-dev的
步骤6:然后运行npm run dev
,它应该工作。
为什么这项工作?
库
我周围挖了一下,原来sass-loader使用node-sass具有由@ 22samuelk提到诸如includePaths
一个一些选项。的includepaths告诉节点青菜或者说底层库LibSass包括从该目录/路径萨斯文件。
Vue公司
萨斯装载机选项
默认情况下Vue公司预计你的资产在你的项目中src/assets
文件夹(纠正我,如果我错了)。但是,您可以使用~
你想在你的项目根这看起来像`~/node_modules/@material/smth/mdc-smth.scss开始indicat。
现在,如果您希望sass-loader使用除这些选项以外的其他选项,则需要明确告诉他们。
因此path.resolve(__dirname, '../node_modules'
因为utils
文件在./build
,您需要使用绝对路径sass-loader
来了解去哪里看。
Vue公司装载机配置
这是不是真的特定于vue-loader.conf.js
作品定义的问题,但VUE装载机配置如下:
它使用cssLoaders()
返回的地图构建webpack预期的装载机。 然后通过提供key
作为加载器对象的test:
中使用的文件扩展名来使用返回的映射({key:value}
)。 value
被用作加载器对象。 想这样其中:
{
test: /\.(key)$/,
use: [
{
loader: '//ld//-loader',
options: {
/*Options passed to generateLoaders('//ld//', options)*/
},
},
],
}
哪里key
是文件扩展。在这种情况下,可以是sass
或scss
。而//ld//
是你使用的加载器。其中显示在步骤3为'sass'
。
希望这会清理一些东西。花了我一段时间,因为我刚开始使用Vue。
尝试'@import'〜/ @ material/elevation/mdc-elevation';' – sobolevn
@sobolevn这也行不通。但是,链接的示例使用'@ material/elevation/mdc-elevation'导入它,所以也应该以某种方式工作。 – 22samuelk
看看这个简单的例子:https://github.com/wemake-services/vue-material-button/blob/master/src/components/MaterialButton.vue#L72 – sobolevn