以前、このブログで「vuejs+bulmaならbuefyがいいかもしれない」という記事を書きました。
ここでは、Nuxt.jsのプロジェクトでのBuefyの使い方について書いておきます。
簡単におさらいしておくと、Buefyは、モダンなオープンソースのCSSフレームワークであるBulmaを使ったVue.js用のUIコンポーネントを提供するオープンソースのライブラリです。
検証に使った各種ツール、パッケージのバージョンは以下のとおりです。
また、Nuxt.jsのプロジェクトはvue-cliで作りました。
vue init nuxt-community/starter-template <project-name>
cd <project-name>
npm install
以下、Nuxt.jsでBuefyを使うための手順を纏めます。
npmでbuefy
をインストールします。
npm install --save buefy
npmでsass-loader
とnode-sass
をインストールします。
npm install --save-dev sass-loader node-sass
まず、@/plugins/buefy.js
を作成し、Vue.jsにBuefyを適用します。
import Vue from 'vue'
import Buefy from 'buefy'
Vue.use(Buefy)
nuxt.config.js
に以下を追記して、上記のプラグインを有効にします。
module.exports = {
// (略)
build: {
// 略
vendor: [
'buefy'
]
},
plugins: [
'~/plugins/buefy'
]
}
Buefyは、デフォルトでMaterial Design Iconsを使用するため、 アイコンフォントを引き込んでおきます。
nuxt.config.js
のhead
に以下を追記します。
module.exports = {
// (略)
head: {
// (略)
link: [
// (略)
{ rel: 'stylesheet', href: '//cdn.materialdesignicons.com/2.0.46/css/materialdesignicons.min.css' }
]
}
// (略)
}
次に、ここにあるようなBulmaのカスタマイズをするためのscssファイルを書きます。
ファイルは、@/assets/css/main.scss
として、例として↑のページの内容をそのまま真似してみます。
@import "~bulma/sass/utilities/_all";
// Set your colors
$primary: #8c67ef;
$primary-invert: findColorInvert($primary);
$twitter: #4099FF;
$twitter-invert: findColorInvert($twitter);
// Setup $colors to use as bulma classes (e.g. 'is-twitter')
$colors: (
"white": ($white, $black),
"black": ($black, $white),
"light": ($light, $light-invert),
"dark": ($dark, $dark-invert),
"primary": ($primary, $primary-invert),
"info": ($info, $info-invert),
"success": ($success, $success-invert),
"warning": ($warning, $warning-invert),
"danger": ($danger, $danger-invert),
"twitter": ($twitter, $twitter-invert)
);
// Links
$link: $primary;
$link-invert: $primary-invert;
$link-focus-border: $primary;
// Import Bulma and Buefy styles
@import "~bulma";
@import "~buefy/src/scss/buefy";
そして、nuxt.config.js
に以下を追記します。
module.exports = {
// (略)
css: [
'@/assets/css/main.scss'
],
build: {
// (略)
postcss: {
plugins: {
'postcss-custom-properties': false
}
}
}
}
これで、Nuxt.jsのプロジェクトでBuefyを使えるようになりました。