2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【React】【TypeScript】GitHub Pagesデプロイの為、buildからdocsディレクトリへファイル移動自動化

Posted at

はじめに

create-react-app,yarn run buildでbuildファイルを作成し、それをGitHub Pagesにデプロイする為、docsディレクトリに移動させ反映させるための設定。

create-react-appの依存関係に含まれるreact-scriptsというモジュール(builder)を使う場合、buildの出力先のディレクトリを指定できない為、追加設定を行った。

package.json


{
  "name": "app_name",
  "version": "0.1.0",
  "private": true,
  "homepage": "./", ※①
  "dependencies": {
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.3.2",
    "@testing-library/user-event": "^7.1.2",
    "@types/jest": "^24.0.0",
    "@types/node": "^12.0.0",
    "@types/react": "^16.9.0",
    "@types/react-dom": "^16.9.0",
    "react": "^16.13.1",
    "react-dom": "^16.13.1",
    "react-scripts": "3.4.1",
    "typescript": "~3.7.2"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "postbuild": "node copyFile.js", ※②
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

① "homepage": "./"

こちらの記事を参考にさせて頂き、設定した。

これで、

<script src="./static/js/hogehoge.chunk.js"></script>
<script src="./static/js/main.fugafuga.chunk.js"></script>

といったように相対パスでbuildされたjsファイルが読み込まれる様になり、buildディレクトリ内をdocsディレクトリに移動させても問題なく読み込まれるようになる。

② "postbuild":"node copyFile.js"

こちらを設定することで、yarn run buildのbuildの後に指定したjsファイルが実行されるようになり、そのファイルにbuildディレクトリ内をdocsディレクトリに自動的に移動させる為のコードを追加する。

copyFile.js(例)

var path = require('path');
var fse = require('fs-extra');

const copyPath = path.join(__dirname, "./build/");
const pastePath = path.join(__dirname, "./docs/");
//指定したpathへディレクトリ内のファイル・ディレクトリをまとめてコピー
fse.copySync(copyPath , pastePath);

// buildディレクトリごと、内容を削除
const rmdir = './build';
fse.removeSync(rmdir);

終わりに。

最後まで読んで頂きありがとうございます:bow_tone1:
転職の為、未経験の状態からRailsを学習しております。正しい知識を着実に身に着け、実力のあるエンジニアになりたいと考えています。継続して投稿していく中で、その為のインプットも必然的に増え、成長に繋がるかと考えています。
今現在、初心者だからといって言い訳はできないですが、投稿の内容に間違っているところや、付け加えるべきところが多々あるかと思いますので、ご指摘頂けると幸いです。この記事を読んで下さりありがとうございました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?