-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathlink-xo-deps.js
28 lines (26 loc) · 963 Bytes
/
link-xo-deps.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
const assert = require("assert");
const fs = require("graceful-fs");
const { safeLoad } = require("js-yaml");
const path = require("path");
const doc = safeLoad(fs.readFileSync("pnpm-lock.yaml"));
const [[, { dependencies }]] = Object.entries(doc.packages)
.filter(([name]) => name.startsWith("/xo/"));
assert(dependencies);
const xoNodeModules = path.resolve(fs.readlinkSync("./node_modules/xo"), "..");
for (const dep of Object.keys(dependencies)) {
if (!(dep.startsWith("eslint-") || dep.includes("/eslint-"))) {
continue;
}
const depDir = path.resolve(xoNodeModules, dep);
const depLink = path.resolve("./node_modules", dep);
if (fs.existsSync(depDir) && !fs.existsSync(depLink)) {
const [scope, bare] = dep.split("/");
if (bare) {
const scopeDir = path.resolve("./node_modules", scope);
if (!fs.existsSync(scopeDir)) {
fs.mkdirSync(scopeDir);
}
}
fs.symlinkSync(depDir, depLink, "junction");
}
}