1WebLaravel + React

CI/CDIDE

Gyazo
Heroku
WebApacheHeroku

DB
clone
CircleCIHeroku

TL;DR
LaravelReactWeb
commit
/
PHPWeb Application FrameworkLaravel
PHPUnitLaravel
React + TypeScript
Create React AppCRA
IDEIntelliJ IDEA
GraphQLAPI
Lighthouse
Apollo
LaravelReact
Heroku
Heroku
PHPTypeScriptHeroku
HerokuGitHubmaster
CircleCI使GitHubcommitCI
Pull Reuqest (PR)PHPPHPStan使reviewdog
PHPUnit
CI

PHP + LaravelWebLaravelBladeReactVue
LaravelReact
Linux
GitHub使
Scrapbox
LaravelLaravelHerokuHeroku


Web便
Web調2019Web
PaaS
GitHub

2019WebVue/React/AngularWebFlutterFirebaseAWS使
Firebase便Firebase使


Heroku
Heroku使
LaravelWAF
LaravelWeb便
01000
VPS


Laravel Telescope
GitHubcommitPushPR
PR

Gyazo


vagrant 2.2.6
vagrant box add laravel/homestead fails. · Issue #1324 · laravel/homestead2.2.5
yarn 1.19.2
node v13.2.0

LaravelVagrantVMHomestead
Homestead#adf20d
folders:
# local
- map: ~/dev/laravel-cra-template
# vagrantcode/mapping
to: /home/vagrant/code
sites:
# laravel-react.test
- map: laravel-react.test
# code/publiclaravelindex.php
to: /home/vagrant/code/public
Laravel
Laravel
https://laravel.com/docs/6.x/installation
zsh
# homestead.yaml
vagrant ssh
# homestead
cd code
composer create-project --prefer-dist laravel/laravel .
http://laravel-react.test/
Gyazo

Create React App使
React
WebpackBabelWebpack
JavaScriptTypeScript使便
zsh
# PC
cd ~/dev/laravel-cra-template
# project rootfrontReact
yarn create react-app front --typescript
zsh
cd front
#
yarn run start
http://localhost:3000/ React
Gyazo
huskyPrettier

LaravelReact
localhost(Ceate React App - API -> Laravelhomestead
HTTPlocalhosthomesteadApache2
Heroku
1HerokuDyno

Reactpublic/
Laravel GET / React
http://laravel-react.test/ Blade welcome.blade.php
Gyazo

http://laravel-react.test/ frontReact
Homesteadpublic/
front/package.json
"build:production": "yarn build && mv build/* ../public",
routes/web.php
<?php
#
Route::fallback(function () {
# public/index.htmlCRA
return file_get_contents(public_path('index.html'));
});
APILaravelLaravel
yarn run build:production http://laravel-react.test/
Heroku
yarn run start

Heroku

Gyazo

HerokuHeroku使

https://dashboard.heroku.com/new-app
kadoyau-laravel-react YOUR_APP_NAME
GitHub
GitHub
Gyazo
masterpushPull Requestmaster
Gyazo

Laravel
LaravelAPP_KEY
https://dashboard.heroku.com/apps/YOUR_APP_NAME/settings GUI
.env HerokuPostgreSQLHomesteadMySQLPostgreSQL
heroku config:set -a YOUR_APP_NAME \
APP_KEY=base64:YOUR_KEY_IS_HERE \
APP_NAME=laravel-react\
APP_ENV=production \
APP_DEBUG=false \
LOG_CHANNEL=stack

nodejsBuildPack
pushrootcomposer.lockPHP
https://dashboard.heroku.com/apps/YOUR_APP_NAME/settings
heroku/php
Gyazo
Herokuyarn
root yarn install OKrootpackage.jsonfront
Procfile
ApacheDocument Rootpublic
papertrail使

Gyazo

🚀
masterHeroku
papertrail

LaravelAPI
ReactAPI
💪

API
MySQLuserAPI
DB

HomesteadGraphQL API
GraphQLApollo
zsh
yarn add apollo-boost graphql react-apollo
user
localhost:3000CRA
Gyazo
Chrome dev tool404
Gyazo
localhost /graphql CRA404
ReactLaravelproxy
"proxy": "http://laravel-react.test/", # CRAproxyAPI
yarn run start
Gyazo


APIHerokuDBSeeding
APIHerokumaster
Gyazo
HerokuDBLaravelDB

HerokuDB
HerokuMySQLPostgresAddon
Gyazo
Heroku Postgrescredential
Gyazo
LaravelDB
zsh
heroku config:set -a YOUR_APP_NAME \
DB_CONNECTION=pgsql \
DB_HOST= \
DB_PORT= \
DB_DATABASE= \
DB_USERNAME= \
DB_PASSWORD=

HerokuDB
zsh
$ heroku run bash -a kadoyau-laravel-react
Running bash on kadoyau-laravel-react... up, run.1796 (Free)
~ $ php artisan migrate
**************************************
* Application In Production! *
**************************************
Do you really wish to run this command? (yes/no) [no]:
> yes
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (0.03 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (0.04 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (0.02 seconds)

Seeding
LaravelDBSeeder
zsh
$ php artisan db:seed --class=UsersTableSeeder
**************************************
* Application In Production! *
**************************************
Do you really wish to run this command? (yes/no) [no]:
> yes
Database seeding completed successfully.

API

CI
Gyazo

CI
HerokuCI使CircleCI使

CI
Laravel

CircleCI
CircleCI
Gyazo
CircleCIconfig.ymlGitHubpush

Gyazo

Larastan + reviewdog + CircleCI
GitHubCIPR
Gyazo



Tips
React
Laravelindex.html /about
React Router使JavaScript
GET / GET /about Laravelindex.htmlReact Router
Vue

便
Heroku
CDN使CDN

Laravel
Laravel TelescopeLaravel便

IDEIntelliJ IDEA使便
HomesteadDB
homesteadUnit test