自分用めも

初心者ちっくなプログラムネタを中心に、自分用の覚え書きをメモっていくための場所です。

vue createによるプロジェクト作成からの初期設定メモ

バージョン

vue --version
@vue/cli 4.5.9

npm list vue
vue@2.6.12

vueはもうすぐメジャーバージョンアップして3系になるはずなので、
(既に公開はされてますが2020/12現在はpreviewバージョンです)
2系の設定はこれから変わることはないはず…。

プロジェクト作成

vue create [プロジェクト名]
設定例

https://cli.vuejs.org/config/
vue.config.js

module.exports = {
  publicPath: process.env.NODE_ENV === 'production'
    ? '/'
    : '/',
  assetsDir: 'static'
}

vuex

https://github.com/vuejs/vuex
https://vuex.vuejs.org/guide/

vue add vuex

vue addは一部モジュールのみ対応したコマンドで、
npm installと推奨ディレクトリ作成、main.jsへのimportなどの環境整備を行ってくれる。
ソースに手が入るので、インストール前にgitの差分があったりすると
「作業前にcommitしたほうがいいよ」なんて警告が出たりします。

vue-router

https://router.vuejs.org/ja/installation.html

vue add router

addするとsrc/viewというディレクトリが作成される。
自然と実装はviewの中にcomponentを読み込む形になり、よりわかりやすい気がします。

eslint

https://eslint.vuejs.org/user-guide/#installation

vue add @vue/cli-plugin-eslint

書式チェッカー/フォーマッタ。
自動フォーマットは↓

npm run lint -- --fix
設定例

.eslintrc.js

module.exports = {
  extends: [
    'eslint:recommended',
    'plugin:vue/recommended'
  ],
  rules: {
    'vue/max-attributes-per-line': 'off',
    'no-console': 0
  },
  env: {
    // module.exportsなどnode環境固有の変数をlintに認識させる
    'node': true
  },
}

axios

https://www.npmjs.com/package/vue-axios

npm install --save axios vue-axios@2.1.5

--saveオプションでpackage.jsonに記録する。
vue-axiosはそのままインストールすると3系が入るが、axiosの3系はvueの3系向けであるため2系では動かない。
そのため2系向けである@2.1.5を指定する。

使い方

src/main.js

import axios from 'axios'
import VueAxios from 'vue-axios'

// vue-axios読み込み
Vue.use(VueAxios, axios)

上記でthisにaxiosが生えるので、moduleで個別にimportしなくても使える。

this.axios.get('https://dog.ceo/api/breeds/image/random')
  .then((res) => {
    this.test.Image = res.data.message
  })
  .catch((e) => {
    alert(e);
  });

bulma.css

https://bulma.io/documentation/customize/with-node-sass/

npm install node-sass@4.14.1 --save-dev
npm install sass-loader@10.1.1 --save-dev
npm install bulma --save-dev

sass-loaderの11系はvue2系に非対応なので、10系を指定する。
src/assets下にscssファイルを作り、main.jsでロードする。

src/main.js

// sass追記
require('@/assets/scss/my.scss')
sass例

src/assets/scss/my.scss

@charset "utf-8";

$menu-item-active-color: hsl(0, 0%, 29%);
$menu-item-active-background-color: hsl(0, 0%, 96%);

@import "./node_modules/bulma/bulma.sass";

fontawesome

https://fontawesome.com/how-to-use/on-the-web/setup/using-package-managers

npm install --save @fortawesome/fontawesome-free

vue-fontawesomeというモジュールも存在するが、bulmaのiconクラスと相性が悪く、文字のy軸がずれてしまう。
ここでは素でnpm installし、sassで設定を行う。

https://fontawesome.com/how-to-use/on-the-web/using-with/sass
src/assets/scss/my.scss

// 公式の手順では、フォントファイル群をプロジェクト配下にコピーしてfa-font-pathを設定する
// ここでは直接node_modulesの中を参照している
$fa-font-path: '../../../node_modules/@fortawesome/fontawesome-free/webfonts';

@import "./node_modules/@fortawesome/fontawesome-free/scss/fontawesome.scss";
@import "./node_modules/@fortawesome/fontawesome-free/scss/solid.scss";