mirror of
https://github.com/zebrajr/react.git
synced 2026-01-15 12:15:22 +00:00
Post-process build files for React Native to add generated signature and @nolint (#26616)
## Summary We're enabling a new mechanism to synchronize build files from `react` to `react-native`. That new mechanism doesn't post-process files, so we need to add that post-processing somewhere. This PR does that when generating the files in the first place, so the generated files in the `build` directory are ready to be committed in the `react-native` repository directly. This makes use of `signedsource` to avoid direct modifications of these files in the `react-native` repository, as well as `@noformat` and `@nolint` to prevent unactionable CI failures in that repository. ## How did you test this change? Generated build files for `react-native` before and after this change: ``` node ./scripts/rollup/build-all-release-channels.js react-native ``` Checked new contents. Relevant changes: ```diff diff --color -r build-before/react-native/implementations/ReactFabric-dev.fb.js build-after/react-native/implementations/ReactFabric-dev.fb.js 10c10 < * @generated --- > * @generated SignedSource<<03cef14e77b8250b567dfdf3b066085e>> diff --color -r build-before/react-native/implementations/ReactFabric-dev.js build-after/react-native/implementations/ReactFabric-dev.js 11c11 < * @generated --- > * @generated SignedSource<<e39eed38a363846ca9ee9b59a225683c>> diff --color -r build-before/react-native/implementations/ReactFabric-prod.fb.js build-after/react-native/implementations/ReactFabric-prod.fb.js 10c10 < * @generated --- > * @generated SignedSource<<f65efcd6a469d5f6fef1ce647e5ec09a>> diff --color -r build-before/react-native/implementations/ReactFabric-prod.js build-after/react-native/implementations/ReactFabric-prod.js 11c11 < * @generated --- > * @generated SignedSource<<cdd582aa889b1054b2c5faf412622b18>> diff --color -r build-before/react-native/implementations/ReactFabric-profiling.fb.js build-after/react-native/implementations/ReactFabric-profiling.fb.js 10c10 < * @generated --- > * @generated SignedSource<<81e74849b24f104882bd298f062be0fa>> diff --color -r build-before/react-native/implementations/ReactFabric-profiling.js build-after/react-native/implementations/ReactFabric-profiling.js 11c11 < * @generated --- > * @generated SignedSource<<c050b7fa1453dc21ac1c5b98146210a8>> diff --color -r build-before/react-native/implementations/ReactNativeRenderer-dev.fb.js build-after/react-native/implementations/ReactNativeRenderer-dev.fb.js 10c10 < * @generated --- > * @generated SignedSource<<9c03464b489b41c06a065aeba8619263>> diff --color -r build-before/react-native/implementations/ReactNativeRenderer-dev.js build-after/react-native/implementations/ReactNativeRenderer-dev.js 11c11 < * @generated --- > * @generated SignedSource<<18b34c037544949dcf9b28f945921ba8>> diff --color -r build-before/react-native/implementations/ReactNativeRenderer-prod.fb.js build-after/react-native/implementations/ReactNativeRenderer-prod.fb.js 10c10 < * @generated --- > * @generated SignedSource<<592e9654c584d1da523378b119bd8bd7>> diff --color -r build-before/react-native/implementations/ReactNativeRenderer-prod.js build-after/react-native/implementations/ReactNativeRenderer-prod.js 11c11 < * @generated --- > * @generated SignedSource<<91c894db99e2d76f8a32708ad6ad1bde>> diff --color -r build-before/react-native/implementations/ReactNativeRenderer-profiling.fb.js build-after/react-native/implementations/ReactNativeRenderer-profiling.fb.js 10c10 < * @generated --- > * @generated SignedSource<<5ce378a9216ea747d91b208b9fd1ebd5>> diff --color -r build-before/react-native/implementations/ReactNativeRenderer-profiling.js build-after/react-native/implementations/ReactNativeRenderer-profiling.js 11c11 < * @generated --- > * @generated SignedSource<<1c7564f446ee83142976035b2884dcfd>> diff --color -r build-before/react-native/shims/ReactFabric.js build-after/react-native/shims/ReactFabric.js 7c7 < * @format --- > * @noformat 8a9,10 > * @nolint > * @generated SignedSource<<cece19ddbec9f287c995721f49c68977>> diff --color -r build-before/react-native/shims/ReactFeatureFlags.js build-after/react-native/shims/ReactFeatureFlags.js 7c7 < * @format --- > * @noformat 8a9,10 > * @nolint > * @generated SignedSource<<2881c8e89ef0f73f4cf6612cb518b197>> diff --color -r build-before/react-native/shims/ReactNative.js build-after/react-native/shims/ReactNative.js 7c7 < * @format --- > * @noformat 8a9,10 > * @nolint > * @generated SignedSource<<0debd6e5a17dc037cb4661315a886de6>> diff --color -r build-before/react-native/shims/ReactNativeTypes.js build-after/react-native/shims/ReactNativeTypes.js 7c7 < * @format --- > * @noformat 8a9,10 > * @nolint > * @generated SignedSource<<652b117c94307244bcf5e4af18928903>> diff --color -r build-before/react-native/shims/ReactNativeViewConfigRegistry.js build-after/react-native/shims/ReactNativeViewConfigRegistry.js 7c7 < * @format --- > * @noformat 8a9,10 > * @nolint > * @generated SignedSource<<ce82e8957367bee7d11379ab88e3f7c5>> diff --color -r build-before/react-native/shims/createReactNativeComponentClass.js build-after/react-native/shims/createReactNativeComponentClass.js 7c7 < * @format --- > * @noformat 8a9,10 > * @nolint > * @generated SignedSource<<ede54ac2fa1b9a09e234cdf098048989>> ```
This commit is contained in:
@@ -7,6 +7,7 @@ const {
|
||||
readFileSync,
|
||||
writeFileSync,
|
||||
} = require('fs');
|
||||
const path = require('path');
|
||||
const Bundles = require('./bundles');
|
||||
const {
|
||||
asyncCopyTo,
|
||||
@@ -14,6 +15,7 @@ const {
|
||||
asyncExtractTar,
|
||||
asyncRimRaf,
|
||||
} = require('./utils');
|
||||
const {getSigningToken, signFile} = require('signedsource');
|
||||
|
||||
const {
|
||||
NODE_ES2015,
|
||||
@@ -134,6 +136,24 @@ async function copyRNShims() {
|
||||
require.resolve('react-native-renderer/src/ReactNativeTypes.js'),
|
||||
'build/react-native/shims/ReactNativeTypes.js'
|
||||
);
|
||||
processGenerated('build/react-native/shims');
|
||||
}
|
||||
|
||||
function processGenerated(directory) {
|
||||
const files = readdirSync(directory)
|
||||
.filter(dir => dir.endsWith('.js'))
|
||||
.map(file => path.join(directory, file));
|
||||
|
||||
files.forEach(file => {
|
||||
const originalContents = readFileSync(file, 'utf8');
|
||||
const contents = originalContents
|
||||
// Replace {@}format with {@}noformat
|
||||
.replace(/(\n\s*\*\s*)@format\b.*(\n)/, '$1@noformat$2')
|
||||
// Add {@}nolint and {@}generated
|
||||
.replace(' */\n', ` * @nolint\n * ${getSigningToken()}\n */\n`);
|
||||
const signedContents = signFile(contents);
|
||||
writeFileSync(file, signedContents, 'utf8');
|
||||
});
|
||||
}
|
||||
|
||||
async function copyAllShims() {
|
||||
|
||||
Reference in New Issue
Block a user