Files
react-native/scripts/build/prepack.js
Alex Hunt 89300acb9c Migrate Node.js builtin imports to node: scheme (#57611)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57611

Directly follows D112733139 (Metro).

**Motivation**

- New Node builtins are *only* available under the prefix (e.g. `node:sqlite`), as this allows Node to introduce them without ecosystem-breaking changes, so this is the direction of travel and the only choice that'll allow consistency.
- Encouraging them and grouping them separately makes it easier to reason about a module's 3rd party dependencies.

Changelog: [Internal]

Reviewed By: robhogan

Differential Revision: D112803684

fbshipit-source-id: 40668d746a7151b3aa4800ff8af997902a18d198
2026-07-21 09:01:41 -07:00

46 lines
1.2 KiB
JavaScript

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
* @format
*/
require('../shared/babelRegister').registerForScript();
const {promises: fs} = require('node:fs');
const path = require('node:path');
// "prepack" script to prepare JavaScript packages for publishing.
//
// We use this to copy over fields from "publishConfig" to the root of each
// package.json, which is not supported in Yarn v1.
async function prepack() {
const pkgJsonPath = path.join(process.cwd(), './package.json');
const contents = JSON.parse(await fs.readFile(pkgJsonPath, 'utf8'));
if (
path.dirname(pkgJsonPath).split(path.sep).slice(-2, -1)[0] !== 'packages'
) {
console.error('Error: prepack.js must be run from a package directory');
process.exitCode = 1;
return;
}
if (contents.publishConfig != null) {
for (const key of Object.keys(contents.publishConfig)) {
contents[key] = contents.publishConfig[key];
}
}
delete contents.publishConfig;
await fs.writeFile(pkgJsonPath, JSON.stringify(contents, null, 2) + '\n');
}
if (require.main === module) {
void prepack();
}