You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.2 KiB
40 lines
1.2 KiB
#!/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(); |
|
};
|
|
|