Skip to content

Commit

Permalink
Remove examples and other unwanted artifacts from installed dependencies
Browse files Browse the repository at this point in the history
Signed-off-by: Miki <miki@amazon.com>
  • Loading branch information
AMoo-Miki committed Sep 1, 2023
1 parent 83cd7f6 commit 7208291
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
- Bump `node-sass` to a version that uses a newer `libsass` ([#4649](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4649))
- [CVE-2019-11358] Bump version of tinygradient from 0.4.3 to 1.1.5 ([#4742](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4742))
- [CVE-2021-3520] Bump `lmdb` from `2.8.0` to `2.8.5` ([#4804](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4804))
- Remove examples and other unwanted artifacts from installed dependencies ([#4896](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4896))

### 📈 Features/Enhancements

Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
"author": "opensearch-project",
"scripts": {
"preinstall": "scripts/use_node ./preinstall_check",
"postinstall": "scripts/use_node scripts/postinstall",
"osd": "scripts/use_node scripts/osd",
"opensearch": "scripts/use_node scripts/opensearch",
"test": "grunt test",
Expand Down
41 changes: 41 additions & 0 deletions scripts/postinstall.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

/* eslint no-restricted-syntax: 0 */

const fs = require('fs/promises');

/**
* Some libraries pack their demos and examples into their release artifacts.
* This unwanted content makes our release artifacts larger but more importantly,
* some contain in-browser references to outdated and vulnerable versions of
* libraries that are not even mentioned in the dependency tree. This is a
* problem when vulnerability scanners point them out, and we have no way to fix
* them. This function looks for folders that are unwanted and deletes them.
*/
const removeUnwantedFolders = async (root, unwantedNames) => {
const items = await fs.readdir(root, { withFileTypes: true });
const promises = [];
for (const item of items) {
if (!item.isDirectory()) continue;

if (unwantedNames.includes(item.name)) {
promises.push(fs.rm(`${root}/${item.name}`, { recursive: true, force: true }));
} else {
promises.push(...(await removeUnwantedFolders(`${root}/${item.name}`, unwantedNames)));
}
}

return promises;
};
const run = async () => {
const promises = await removeUnwantedFolders('node_modules', ['demo', 'example', 'examples']);
await Promise.all(promises);
};

run().catch((err) => {
console.error(err);
process.exit(1);
});

0 comments on commit 7208291

Please sign in to comment.