@ember-apply/volta
Version:
ember-apply plugin for fixing or applying volta to your project / monorepo
46 lines (33 loc) • 1.09 kB
JavaScript
import assert from 'node:assert';
import path from 'node:path';
import url from 'node:url';
import { packageJson, project } from 'ember-apply';
import { execa } from 'execa';
export default async function run() {
await hasVolta();
let workspaces = await project.getWorkspaces();
let root = await project.workspaceRoot();
for (let workspace of workspaces) {
let manifest = await packageJson.read(workspace);
if (workspace === root) {
if (!manifest.volta) {
await execa('volta', ['pin', 'node'], { cwd: root });
}
continue;
}
let extendsTarget = path.relative(workspace, root);
await packageJson.modify((json) => {
json.volta = { extends: path.join(extendsTarget, 'package.json') };
}, workspace);
}
}
async function hasVolta() {
let result = await execa('which', ['volta']);
assert(
result.exitCode === 0,
`volta was not found on this system. Please install volta at https://volta.sh`,
);
}
// @ts-ignore
const __dirname = path.dirname(url.fileURLToPath(import.meta.url));
run.path = __dirname;