12345678910111213141516171819202122232425262728293031323334353637383940 |
- #!/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();
- };
|