Skip to content

Commit 9142e9d

Browse files
committed
feat: add styles.configFile option
closes #263 closes #245 closes #221
1 parent e578193 commit 9142e9d

File tree

16 files changed

+177
-38
lines changed

16 files changed

+177
-38
lines changed

dev/src/App.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<v-app>
33
<v-container>
44
<v-alert>Alert</v-alert>
5-
<v-card v-ripple>
5+
<v-card v-ripple class="bg-red">
66
<div style="text-align: center">
77
<v-img src="/vuetify.png" style="display: inline-flex"></v-img>
88
</div>

dev/src/main.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
// import 'vuetify/styles'
2-
import './main.scss'
1+
import 'vuetify/styles'
2+
// import './main.scss'
33
import { createApp } from 'vue'
44
import { createVuetify } from 'vuetify'
55

dev/src/main.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@use 'vuetify/styles' with (
1+
@use 'vuetify' with (
22
$color-pack: false,
33
$utilities: false,
44
$alert-padding: 24px,

dev/src/settings.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
@forward 'vuetify/settings' with (
2+
$utilities: false,
3+
//$color-pack: false,
4+
$button-height: 56px,
5+
);

dev/src/setup.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
<v-card title="Setup component"></v-card>
33
</template>
44

5-
<script setup lang="ts">
5+
<script setup>
66
//
77
</script>

dev/vite.config.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@ export default defineConfig(({ command }) => ({
88
root: path.resolve(__dirname, 'src'),
99
plugins: [
1010
vue(),
11-
vuetify({ styles: 'expose', autoImport: true }),
11+
vuetify({
12+
autoImport: true,
13+
styles: {
14+
configFile: 'settings.scss',
15+
},
16+
}),
1217
{
1318
name: 'configure-server',
1419
configureServer(server) {

dev/webpack.config.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ function sassLoaderOptions (indentedSyntax = false) {
1010
return {
1111
// implementation: require('sass'),
1212
// additionalData: `@import "~@/_variables.scss"` + (indentedSyntax ? '' : ';'),
13-
api: 'modern',
13+
// api: 'modern',
1414
sassOptions: {
1515
indentedSyntax,
1616
// importers: [{
@@ -86,12 +86,14 @@ module.exports = {
8686
'vue$': 'vue/dist/vue.runtime.esm-bundler.js',
8787
'@': path.resolve(__dirname, 'src')
8888
},
89-
extensions: ['*', '.js', '.mjs', '.cjs', '.vue', '.json']
89+
extensions: ['*', '.js', '.mjs', '.cjs', '.vue', '.json', '.sass', '.scss']
9090
},
9191
plugins: [
9292
new VueLoaderPlugin(),
9393
new VuetifyPlugin({
94-
styles: 'expose',
94+
styles: {
95+
configFile: './src/settings.scss',
96+
},
9597
// progressiveImages: true
9698
}),
9799
// new BundleAnalyzerPlugin({

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"@types/find-cache-dir": "^3.2.1",
1616
"@types/loader-utils": "^2.0.3",
1717
"@types/node": "^16.11.12",
18+
"@types/mkdirp": "^1.0.2",
1819
"@typescript-eslint/eslint-plugin": "^5.29.0",
1920
"@typescript-eslint/parser": "^5.29.0",
2021
"@vitejs/plugin-vue": "^3.0.1",

packages/shared/src/index.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ import * as path from 'upath'
22

33
export interface Options {
44
autoImport?: importPluginOptions,
5-
styles?: true | 'none' | 'expose' | 'sass',
5+
styles?: true | 'none' | 'expose' | 'sass' | {
6+
configFile: string,
7+
},
68
/** @internal Only for testing */
79
stylesTimeout?: number
810
}
@@ -18,3 +20,11 @@ export { cacheDir, writeStyles } from './styles/writeStyles'
1820
export function resolveVuetifyBase () {
1921
return path.dirname(require.resolve('vuetify/package.json', { paths: [process.cwd()] }))
2022
}
23+
24+
export function isObject (value: any): value is object {
25+
return value !== null && typeof value === 'object'
26+
}
27+
28+
export function includes (arr: any[], val: any) {
29+
return arr.includes(val)
30+
}

packages/vite-plugin/README.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,31 @@ export default createVuetify()
3030
### Customising variables
3131
```js
3232
// vite.config.js
33+
plugins: [
34+
vue(),
35+
vuetify({ styles: { configFile: 'src/settings.scss' } }),
36+
]
37+
```
38+
```js
39+
// plugins/vuetify.js
40+
import 'vuetify/styles'
41+
import { createVuetify } from 'vuetify'
42+
43+
export default createVuetify()
44+
```
45+
```scss
46+
// settings.scss
47+
@use 'vuetify/settings' with (
48+
$color-pack: false,
49+
$utilities: false,
50+
);
51+
```
52+
53+
`settings.scss` can be used in your own components to access vuetify's variables.
54+
55+
### Customising variables (old method)
56+
```js
57+
// vite.config.js
3358
plugins: [
3459
vue(),
3560
vuetify({ styles: 'expose' }),

0 commit comments

Comments
 (0)