Prune NPM metadata fields from packages before re-publishing (#14617)
Brian Vaughn committed
Jan 17, 2019 at 14:34 UTC
4846809370737f13c0465ac7b83764b408c6e732
2 files changed
+33
scripts/release/prepare-stable-commands/prune-package-registry-metadata.js
new
+31
@@ -0,0 +1,31 @@
1
+#!/usr/bin/env node
2
+
3
+'use strict';
4
+
5
+const {logPromise} = require('../utils');
6
+const {readJson, writeJson} = require('fs-extra');
7
+const {join} = require('path');
8
+
9
+const run = async ({cwd, packages}) => {
10
+ const nodeModulesPath = join(cwd, 'build/node_modules');
11
+
12
+ for (let i = 0; i < packages.length; i++) {
13
+ const packageName = packages[i];
14
+ const packageJSONPath = join(nodeModulesPath, packageName, 'package.json');
15
+ const packageJSON = await readJson(packageJSONPath);
16
+
17
+ // NPM adds a lot of metadata fields on checkout.
18
+ // It's nice to strip these before re-publishing the package.
19
+ for (let key in packageJSON) {
20
+ if (key.startsWith('_')) {
21
+ delete packageJSON[key];
22
+ }
23
+ }
24
+
25
+ await writeJson(packageJSONPath, packageJSON, {spaces: 2});
26
+ }
27
+};
28
+
29
+module.exports = async params => {
30
+ return logPromise(run(params), 'Pruning package registry metadata');
31
+};
scripts/release/prepare-stable.js
+2
@@ -10,6 +10,7 @@ const confirmStableVersionNumbers = require('./prepare-stable-commands/confirm-s
10
const guessStableVersionNumbers = require('./prepare-stable-commands/guess-stable-version-numbers');
11
const parseParams = require('./prepare-stable-commands/parse-params');
12
const printPrereleaseSummary = require('./shared-commands/print-prerelease-summary');
13
+const prunePackageRegistryMetadata = require('./prepare-stable-commands/prune-package-registry-metadata');
14
const testPackagingFixture = require('./shared-commands/test-packaging-fixture');
15
const testTracingFixture = require('./shared-commands/test-tracing-fixture');
16
const updateStableVersionNumbers = require('./prepare-stable-commands/update-stable-version-numbers');
@@ -28,6 +29,7 @@ const run = async () => {
29
await checkOutPackages(params);
30
await guessStableVersionNumbers(params, versionsMap);
31
await confirmStableVersionNumbers(params, versionsMap);
32
+ await prunePackageRegistryMetadata(params);
33
await updateStableVersionNumbers(params, versionsMap);
34
35
if (!params.skipTests) {