scripts/prepare-built-package.js (54 lines of code) (raw):

/* * https://youtrack.jetbrains.com/issue/RG-2304/Publish-built-version-as-a-separate-package-jetbrains-ring-ui-built * Removes "devDependencies" from package.json file, and keeps only whitelisted "dependencies" */ /* eslint-disable no-console */ const fs = require('fs'); const sourcePackageJSON = require('../package.json'); const BUILT_PACKAGE_NAME = '@jetbrains/ring-ui-built'; // There should be all dependencies, that are actually used in runtime. All build-time dependencies should be removed const WHITE_LIST = [ '@jetbrains/icons', '@jetbrains/logos', 'change-case', 'classnames', 'combokeys', 'date-fns', 'dequal', 'element-resize-detector', 'fastdom', 'focus-trap', 'highlight.js', 'just-debounce-it', 'memoize-one', 'react-compiler-runtime', 'react-movable', 'react-virtualized', 'react-waypoint', 'scrollbar-width', 'simply-uuid', 'sniffr', 'util-deprecate', ]; function clearAndRenamePackage() { const filterDependencies = (packageData, whitelist) => { const dependencies = packageData.dependencies; const filteredDependencies = {}; // Only keep runtime dependencies and the ones in the whitelist for (const depName in dependencies) { if (whitelist.includes(depName)) { filteredDependencies[depName] = dependencies[depName]; } } return { ...packageData, dependencies: filteredDependencies, devDependencies: {}, }; }; const updatePackageJSON = (filename, packageData) => { fs.writeFileSync(filename, JSON.stringify(packageData, null, 2)); }; // Rename package.name sourcePackageJSON.name = BUILT_PACKAGE_NAME; // Remove "webpack" from peer dependencies delete sourcePackageJSON.peerDependencies.webpack; delete sourcePackageJSON.peerDependenciesMeta.webpack; // Remove build-time files from files to be published sourcePackageJSON.files = ['components', 'typings.d.ts']; // remove overrides delete sourcePackageJSON.overrides; const filteredData = filterDependencies(sourcePackageJSON, WHITE_LIST); updatePackageJSON('./package.json', filteredData); console.log('package.json updated. DevDependencies removed.'); } clearAndRenamePackage();