お題通りですが、ホームページを簡単にアプリ化できたら楽ですよね!

って事で、僕は普段のWeb開発にはNuxt.jsをよく使うのですが、今回自分が運営している結婚式ムービー制作のLoveYou(ラブユー)というサイトをNuxt.jsとCordovaを使って簡単にアプリ化したのでやり方を紹介します。

サクッとリリースしたiOSアプリはこちら → LoveYou-結婚式ムービー作成 iTunesが開くかも。

ちなみに、結婚式ムービー制作のLoveYou(ラブユー)のサイトは、Nuxt.js + Contentful + Firebase + Heroku で構築しました。

いわゆるオレオレCMSです!

あ、結婚式挙げられる方はムービー作りますのでご注文お待ちしております♪ ←PR

本題: nuxt.config.jsの設定

アプリ化するには、nuxt.config.jsのルーティング周りを次のように設定しました。


/*
 # 必要部分以外は省略してます.
*/
module.exports = {
  head: {
    script: [
      {src: 'cordova.js'} // cordova.jsを読み込みます.
    ]
  },
  build: {
    publicPath: '/nuxt/' // デフォルトの、'/_nuxt/'ではCordovaのWebViewが読み込まないので変更してやります.
  },
  router: {
    mode: 'hash' // ルーティングをハッシュモードに.
  },
  mode: 'spa' // アプリでは起動後、ルートから始まるのでspaモードにします.
};

package.jsonのscriptsにgenerateコマンドを設定して楽ちんビルド設定


"scripts": {
    "dev": "nuxt",
    "build": "nuxt build",
    "start": "node ./server/app.js",
    "generate": "nuxt generate && rsync -r --delete dist/ app/www/ && replace '/nuxt/' 'nuxt/' app/www -r",
    "cordova-run-ios": "cd app && cordova build ios && cordova run ios",
    "lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
    "precommit": "npm run lint",
    "heroku-postbuild": "npm run build",
    "deploy": "git push heroku master"
  }

yarn generate か npm run generateすると、nuxt.jsによって静的ファイルがdistに生成されるので、rsyncでapp/wwwにファイルをコピー。

replaceで生成したファイル中のsrcの値などをCordovaのWebViewが読み込めるように ‘/nuxt/’から’nuxt/’に変換してます。

ちなみに、generateコマンド中のreplaceは、yarn add replaceか、npm i replace してインストールしておきましょう。

あとは、cordova platform add ios などしてプラットフォームを追加後、cordova buildすればハイブリッドアプリが完成〜♪

楽チンでした。

以上!

この記事を書いた人

こうへい

Web developer && 映像クリエイター.