From 72ece7c00b091011617fccf719df7f602cf4f7c7 Mon Sep 17 00:00:00 2001 From: kj_sh604 Date: Sun, 15 Mar 2026 16:19:36 -0400 Subject: refactor: scripts/ --- scripts/build-node.js | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 scripts/build-node.js (limited to 'scripts/build-node.js') diff --git a/scripts/build-node.js b/scripts/build-node.js new file mode 100755 index 0000000..b9bed01 --- /dev/null +++ b/scripts/build-node.js @@ -0,0 +1,40 @@ +#!/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 = "../packages/excalidraw/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(); +}; -- cgit v1.2.3