Open6
Reactを単一のHTMLで書き出す
gasでreactを動かすために単一のHTMLで書き出したい
テンプレ作成
yarn create react-app my-app --template typescript
webpackを上書きできるようにする
yarn add -D react-app-rewired
package.json
"scripts": {
+ "start": "react-app-rewired start",
+ "build": "react-app-rewired build",
+ "test": "react-app-rewired test",
"eject": "react-scripts eject"
},
inlineで書き出してくれるやつ
yarn add html-webpack-inline-source-plugin@1.0.0-beta.2
html-webpack-inline-source-pluginの設定を上書きする
config-overrides.js
const HtmlWebpackPlugin = require('html-webpack-plugin');
const HtmlWebpackInlineSourcePlugin = require('html-webpack-inline-source-plugin');
module.exports = function override(config, env) {
if (env === 'production') {
const addOptions = {
inlineSource: '.(js|css)$',
inject: 'body'
}
Object.assign(
config.plugins
.find(plugin => Object.getPrototypeOf(plugin).constructor.name === 'HtmlWebpackPlugin')
.userOptions,
addOptions
)
config.plugins.push(new HtmlWebpackInlineSourcePlugin(HtmlWebpackPlugin))
}
return config
}
inject: 'body'
にしないとscriptが<div id="root"></div>
の前に来てしまってうまく動かない...これでだいぶハマった😫
あとは不要なロゴとかfaviconとかのファイルを削除して...こんな感じにする。
build/index.htmlをgasに置けばそのまま見れるようになってる!!🥳
そもそもviteとかrollupでやったら良かったんじゃないか説