nuxt项目中有些样式需要经常使用,并且未来有可能会改,比如主题色@theme-color,所以希望在一个地方定义后,后面直接引用变量即可。但是正常使用时,less的变量是不能跨文件使用的,下面使用@nuxtjs/style-resources来把变量注入到项目中的所有文件。
1、安装less依赖
1 | npm install less less-loader --save |
2、安装style-resources
1 | npm install @nuxtjs/style-resources --save |
如果是yarn如下
1 2 | yarn add less-loader less yarn add @nuxtjs/style-resources |
3、配置nuxt.config.js,添加@nuxtjs/style-resources模块和全局变量文件
1 2 3 4 5 6 7 8 9 10 | export default {<!-- --> ... modules: [ '@nuxtjs/style-resources' ], styleResources: {<!-- --> less: '@/assets/vars.less' } ... } |
less有多个,可以使用数组,即less:[xxx.less,yyy.less]
然后全项目都可以使用vars.less模块定义的变量了
例如:
vars.less
1 | @theme-color: #c91c1c; |
index.vue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <template> <section>index</section> </template> <script> export default {<!-- --> name: 'index' } </script> <style scoped lang="less"> section{<!-- --> color: @theme-color; } </style> |
css.css
1 2 3 | .theme-color{ color: @theme-color; } |
其他
scss如下配置
1 2 3 4 5 6 7 8 9 | export default {<!-- --> modules: ['@nuxtjs/style-resources'], styleResources: {<!-- --> scss: [ '@/assets/vars1.scss', '@/assets/vars2.scss' ] } } |
来个全的:
1 2 3 4 5 6 7 8 9 10 11 | export default {<!-- --> modules: [ '@nuxtjs/style-resources', ], styleResources: {<!-- --> sass: [], scss: [], less: [], stylus: [] } } |