vue工程如何为组件自动注入全局样式文件
目录
- Less和Stylus
- 安装style-resources-loader
- 配置vue.config.js
- Sass/Scss
- 扩展
-- src如果每个需要的组件都要手动导入一次,就太繁琐了:
---- styles
-------- variables.less
-------- mixins.less
-------- functions.less
当然最直接的改进方案是创建一个包含上面引入的入口样式文件entry.less,然后在各组件中导入即可:
// entry.less@import './variables'; @import './mixins'; @import './functions';
但是手动导入毕竟繁琐,若能够自动导入就大善了,所幸配置自动导入也不繁琐,下面以常用的Less、Stylus、Sass/Scss等预处理器为例说明如何在vue工程中配置自动导入:
Less和Stylus 配置Less和Stylus自动导入有两种方案:
- 使用style-resources-loader
- 使用vue-cli-plugin-style-resources-loader
安装style-resources-loader
$ npm i -D style-resources-loader
配置vue.config.js
如果工程根目录下没有vue.config.js文件,手动创建一下即可,然后插入以下代码:
// vue.config.jsconst path = require('path')module.exports = {chainWebpack: config => {const types = ['vue-modules', 'vue', 'normal-modules', 'normal']types.forEach(type => addStyleResource(config.module.rule('less').oneOf(type)))// A},}function addStyleResource (rule) {rule.use('style-resource').loader('style-resources-loader').options({patterns: [path.resolve(__dirname, './src/styles/entry.less'),// B],})}
如果想要配置多个导入,只需在B行后继续添加即可:
patterns: [path.resolve(__dirname, './src/styles/entry1.less'),path.resolve(__dirname, './src/styles/entry2.less'),],
如果工程使用的是Stylus,则将A行替换为types.forEach(type => addStyleResource(config.module.rule(‘stylus’).oneOf(type))),将B行替换为*path.resolve(__dirname, ‘./src/styles/entry.styl’)*即可。
Sass/Scss 其实Sass/Scss配置自动导入也可以使用上面的方案,但是使用其原生的方案更加便捷,只需在vue.config.js中配置即可:
// vue.config.jsmodule.exports = {css: {loaderOptions: {sass: {prependData: `@import "@/styles/entry.scss"; `// A}}}}
如果想要配置多个导入,只需在A行继续添加即可:
// vue.config.jsmodule.exports = {css: {loaderOptions: {sass: {prependData: `@import "@/styles/entry1.scss"; @import "@/styles/entry2.scss"; `}}}}
注意:sass-loader@8.0.0之前,要将上面的prependData替换为data。
扩展 如果在使用vue create创建工程时,没有选择Manually select features,或者没有选择CSS Pre-processors,则工程内默认使用的是原生CSS,但是vue的默认Webpack配置中已经内置了对CSS Pre-processors的支持,所以只需要安装响应依赖,然后再工程文件中使用对应语法书写样式即可:
// Less$ npm i -D less less-loader// Sass/Scss$ npm i -D node-sass sass-loader// Stylus$ npm i -D stylus stylus-loader
【vue工程如何为组件自动注入全局样式文件】以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- vue实现表单单独移除一个字段验证
- flask和vue前后端分离项目部署的示例代码
- Vue实现动态控制表格列的显示和隐藏
- 投稿|私域流量成大势所趋,餐企如何借此创造新增量?
- 本文教您win7如何关闭系统休眠状态技巧
- word里面怎样打勾,图文详细说明Word如何在方框里打勾
- 页面图片不显示,图文详细说明页面图片不显示如何处理
- 如何截取视频片段,图文详细说明怎样截取视频片段
- netcore路由器设置,图文详细说明磊科路由器如何设置密码
- 桌面图标显示不正常,图文详细说明图标显示不正常如何恢复