@polkadot/dev
Version:
A collection of shared CI scripts and development environment used by @polkadot projects
54 lines (38 loc) • 1.46 kB
JavaScript
// Copyright 2017-2025 @polkadot/dev authors & contributors
// SPDX-License-Identifier: Apache-2.0
import fs from 'node:fs';
import path from 'node:path';
import { copyDirSync, execPm, exitFatal, logBin, mkdirpSync, rimrafSync } from './util.mjs';
const args = process.argv.slice(2);
logBin('polkadot-dev-copy-to');
if (args.length !== 1) {
exitFatal('Expected one <destination> argument');
}
const dest = path.join(process.cwd(), '..', args[0], 'node_modules');
if (!fs.existsSync(dest)) {
exitFatal('Destination node_modules folder does not exist');
}
// build to ensure we actually have latest
execPm('build');
// map across what is available and copy it
fs
.readdirSync('packages')
.map((dir) => {
const pkgPath = path.join(process.cwd(), 'packages', dir);
return [pkgPath, path.join(pkgPath, 'package.json')];
})
.filter(([, jsonPath]) => fs.existsSync(jsonPath))
.map(([pkgPath, json]) => [JSON.parse(fs.readFileSync(json, 'utf8')).name, pkgPath])
.forEach(([name, pkgPath]) => {
console.log(`*** Copying ${name} to ${dest}`);
const outDest = path.join(dest, name);
// remove the destination
rimrafSync(outDest);
// create the root
mkdirpSync(outDest);
// copy the build output
copyDirSync(path.join(pkgPath, 'build'), outDest);
// copy node_modules, as available
copyDirSync(path.join(pkgPath, 'node_modules'), path.join(outDest, 'node_modules'));
});