I zmagali się z tym samym pytaniem na chwilę. Ale jest naprawdę prosta łatka. Ta funkcja pochodzi z samego węzła.
więc można zadeklarować globalnych SCSS w pliku, powiedzmy globals.scss
którego ścieżka jest:
/src/scss/globals.scss
teraz po prostu można edytować vue-loader
config:
loaders: {
sass: 'vue-style-loader!css-loader!sass-loader?indentedSyntax=1&[email protected] "./src/scss/globals"',
scss: '[email protected] "./src/scss/globals";'
}
i voila! Masz globale scss dostępne dla wszystkich komponentów vue. Mam nadzieję, że to pomoże!
Aktualizacja:
Wiele ustawienia zostały zaktualizowane w nowych wydaniach Vue. Tak więc powyższe zmiany mogą nie wydawać się trwale w najnowszych projektach Vue. Więc będę krótki, jak to wszystko jest związane jednocześnie:
wersja skrócona:
Znajdź build/utils.js
które zawierają metodę (najprawdopodobniej o nazwie cssLoaders()
).Ta metoda zwraca obiekt tak:
return {
...
sass: generateLoaders('sass', { indentedSyntax: true }),
scss: generateLoaders('sass'),
...
}
wystarczy zmienić specyficzną linię scss/sass
aby coś takiego:
return {
...
sass: generateLoaders('sass', { indentedSyntax: true }),
scss: generateLoaders(['css', '[email protected] "~assets/styles/app";']),
...
}
wersja długa:
webpack.base.conf.js
zawiera vue-loader
w to wyglądałoby mniej więcej tak:
...
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
...
Zmienna vueLoaderConfig
jest importowany z pliku vue-loader.conf.js
, który jest równy temu obiektowi:
{
loaders: utils.cssLoaders(Obj), // actual settings coming from cssLoader method of build/utils.js
transformToRequire: {
//some key value pairs would be here
}
}
w build/utils.js
pliku znajdziemy metodę cssLoaders()
która zwraca: ....
return {
css: generateLoaders(),
postcss: generateLoaders(),
less: generateLoaders('less'),
sass: generateLoaders('sass', { indentedSyntax: true }),
scss: generateLoaders('sass'),
stylus: generateLoaders('stylus'),
styl: generateLoaders('stylus')
}
Po prostu należy zaktualizować powyższy kod zaktualizowaną konfiguracją scss
w następujący sposób:
...
{
...
scss: generateLoaders(['css', '[email protected]"~assets/scss/main";']),
...
}
...
W ten sposób zmienne/mixiny zapisane w pliku src/assets/scss/main.scss
będą dostępne dla wszystkich składników.
Nie jestem pewien na temat tego, ponieważ Vueify automatycznie dopasowuje wszystkie style, aby zastosować je tylko do określonego komponentu – Jeff
. Jeśli jest zawarty w twoim głównym, zostanie zastosowany do wszystkich. – highFlyingDodo
Czy ktoś próbował to zrobić z Vue2? Korzystając z podstawowego programu startowego vue-cli i dodałem tę linię 'require' zarówno do pliku App.vue, jak i main.js i nie odniosłem żadnego sukcesu. – K3TH3R