我的assets文件夹中有一个main.scss文件,用于覆盖bulma变量。我通过nuxt-config文件使这个文件全局可用。
@import '~bulma/sass/utilities/initial-variables';
@import '~bulma/sass/utilities/functions';
//override some variables
$primary: #FF5B5B;
$light: #f1f1f1;
@import '~bulma';
$section-height: calc(100vh - #{$navbar-height});
但是,我还需要在@import '~bulma';
语句后覆盖变量。这里的问题是,当在vue组件中使用这些变量时,这极大地增加了站点的有效负载大小。
对于我需要使用这些变量的每个组件:
<style scoped lang="scss">
@import "~/assets/css/main.scss";
.custom-height {
height: $section-height;
}
</style>
大约增加1 MB。我怎么才能只导入一次“〜bulma”?我尝试创建单独的文件,一个用于导入bulma后的变量,另一个用于导入bulma后的变量,但这不起作用,因为你必须在第二个文件中导入bulma,否则你无法引用这些变量。
答案 0 :(得分:0)
这个声音就像一个插件的典型用例。我做的几乎一样,但是用vuetify而不是bulma。 如果你只想要包含一个css文件globaly,你需要做的就是在你的nuxt.config.js文件的属性css中添加它。
module.exports = {
...
css: ['~/assets/css/main.scss'],
...
}
你可能需要一个scss的加载器。 如果您需要先配置您的bulma,可以考虑创建一个插件。 在plugin文件夹中创建一个文件bulma.js,然后将所有配置文件放入此文件中。
import Bulma from 'bulma'
import Vue from 'vue'
Vue.use(Bulma, { your config goes here })
如果您需要从应用程序中访问变量,请在同一文件中写入:
export default ({ app, store ... }) => {
// now you can use all the context
}
可以在此处找到所有可用的上下文属性: Nuxtjs context
在此之后,您需要将其作为插件包含在nuxt.config.js中。
module.exports = {
...
plugins: ['~/plugins/bulma']
build: {
vendor: ['bulma'] // from node_modules imported only once for the whole app
}
...
}
您在build.vendor中放置的所有内容仅加载 ONCE 。 Nuxt build vendor 希望这会有所帮助。 :)
答案 1 :(得分:0)
如今,您可以避免使用以下软件包来将main.scss文件导入每个组件:Nuxt Style Resources
第一步:确保已将sass-loader和node-sass安装为dev依赖项,或安装它们:yarn add sass-loader node-sass --save-dev
或npm i sass-loader node-sass --save-dev
第二步:安装Nuxt Style Resources作为依赖项:yarn add @nuxtjs/style-resources
或npm i @nuxtjs/style-resources
第三步:将其添加到nuxt.config.js
export default {
modules: ['@nuxtjs/style-resources'],
styleResources: {
scss: [
'./assets/vars/*.scss',
'./assets/abstracts/_mixins.scss' // use underscore "_" & also file extension ".scss"
]
}
}
有关更多信息,请检查上面链接中的软件包文档。