`canvas` has been added to the dependency, not devDependency, since v3.0.279. I don't think it is a good idea. Because `node-canvas` prebuilds aren't available for ARM, users with macOS on ARM will request helps from you, which would increase the maintenance burden. We can say the same thing for users with old Linux for which `node-canvas` prebuilds aren't available.

When GitHub actions supports macOS on ARM, the situation would change.

- https://github.com/Automattic/node-canvas/issues/1511

- https://github.com/mozilla/pdfjs-dist/blob/f6eefc659269fe422cc350fe2eef769251eec33d/package.json#L15-L18
```json
  "dependencies": {
    "canvas": "^2.10.1",
    "web-streams-polyfill": "^3.2.1"
  },
```

Configuration:
- PDF.js version: 3.0.279

const webPrefsKeys = Object.keys(webPrefs);
  webPrefsKeys.sort();
  if (webPrefsKeys.length !== chromePrefsKeys.length) {
    console.log("Warning: Pref objects doesn't have the same length.");
    return false;
  }
  let ret = true;
  for (let i = 0, ii = webPrefsKeys.length; i < ii; i++) {
    const value = webPrefsKeys[i];
    if (chromePrefsKeys[i] !== value) {
      ret = false;
      console.log(
        `Warning: not the same keys: ${chromePrefsKeys[i]} !== ${value}`
      );
    } else if (chromePrefs.properties[value].default !== webPrefs[value]) {
      ret = false;
      console.log(
        `Warning: not the same values (for "${value}"): ` +
          `${chromePrefs.properties[value].default} !== ${webPrefs[value]}`
      );
    }
  }
  return ret;
}
function replaceWebpackRequire() {
  
  
  return replace("__webpack_require__", "__w_pdfjs_require__");
}
function replaceNonWebpackImport() {