#!/usr/bin/env node // In order to use this, you need to install Cairo on your machine. See // instructions here: https://github.com/Automattic/node-canvas#compiling // In order to run: // npm install canvas # please do not check it in // yarn build-node // node build/static/js/build-node.js // open test.png const rewire = require("rewire"); const defaults = rewire("react-scripts/scripts/build.js"); const config = defaults.__get__("config"); // Disable multiple chunks config.optimization.runtimeChunk = false; config.optimization.splitChunks = { cacheGroups: { default: false, }, }; // Set the filename to be deterministic config.output.filename = "static/js/build-node.js"; // Don't choke on node-specific requires config.target = "node"; // Set the node entrypoint config.entry = "./src/index-node"; // By default, webpack is going to replace the require of the canvas.node file // to just a string with the path of the canvas.node file. We need to tell // webpack to avoid rewriting that dependency. config.externals = (context, request, callback) => { if (/\.node$/.test(request)) { return callback( null, "commonjs ../../../node_modules/canvas/build/Release/canvas.node", ); } callback(); };