Open6

Reactを単一のHTMLで書き出す

kodamakodama

gasでreactを動かすために単一のHTMLで書き出したい

kodamakodama

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
kodamakodama

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>の前に来てしまってうまく動かない...これでだいぶハマった😫

kodamakodama

そもそもviteとかrollupでやったら良かったんじゃないか説