WordPress + Nuxt.js でポートフォリオサイトを作る その11
WordPressサイト(http://works.yuheijotaki.com/)の REST API と Nuxt.js でポートフォリオサイトを作成する。その11

GitHub: https://github.com/yuheijotaki/works-nuxt
Netlify: https://works-yuheijotaki.netlify.com/
Google Analyticsの追加
Google アナリティクスを使うには? によると公式 Google アナリティクスモジュール というものがあるらしいのでそちらを使う。
$ npm install --save-dev @nuxtjs/google-analytics
でモジュールインストールして nuxt.config.js の buildModules[] に
// ...
buildModules: [
['@nuxtjs/google-analytics', {
id: 'UA-XXXXXXXX-XX'
}]
],
// ...
を追加すればOKみたい。
参考:
nuxt-community/analytics-module: Google Analytics Module
サイトマップの追加
サイトマップもモジュール使ってできるようなのでやってみる
npm install --save @nuxtjs/sitemap
nuxt.config.js には下記を追加
// ...
modules: [
'@nuxtjs/sitemap'
],
// ...
Axios で WordPressのエンドポイントを指定して下記のように指定
// ...
sitemap: {
path: '/sitemap.xml',
hostname: 'https://works.yuheijotaki.com',
routes(callback) {
axios.get('https://works-wp.yuheijotaki.com/wp-json/wp/v2/posts?per_page=100&page=1&_embed=1')
.then((res) => {
var routes = res.data.map((post) => {
return '/work/' + post.slug
})
callback(null, routes)
})
.catch(callback)
}
},
// ...
$ npm run generate してみると /dist にsitemap.xmlが生成されているのが確認できる。
参考:
.env ファイルの作成
環境変数を使えるようにするには dotenv モジュールを使う
$ npm install -D @nuxtjs/dotenv
.env ファイルを作成して下記のようにみたく書く
API_URL = 'https://works-wp.yuheijotaki.com/wp-json/wp/v2/'
SITE_URL = 'https://works.yuheijotaki.com'
nuxt.config.js の export default { より前に
// .env読み込み
require('dotenv').config()
const { API_URL, SITE_URL } = process.env
を書いてあげて、 export default { の中には
export default {
env: { API_URL, SITE_URL },
modules: [
'@nuxtjs/dotenv'
],
// ...
とすると nuxt.config.js でも 各 .vueファイルでも.envで定義している環境変数が使えるようになる。
_slug.vue
// ...
async asyncData( { params } ) {
const { data } = await axios.get(`${process.env.API_URL}posts?slug=${params.slug}`)
// ...
},
// ...
のような感じで process.env.[変数名] という形で使う
このままだとNetlify側で.envの中は認識してくれないため、Netlify側で環境変数の指定を行う
Settings => Build & deploy => Environment にて添付のように .env と同じ値を指定する。

参考: