From 3683e7a9a78a02e7035832e0f2c7980bf5cd5ebc Mon Sep 17 00:00:00 2001 From: Brian Heston <47367562+bheston@users.noreply.github.com> Date: Sun, 18 Feb 2024 16:27:11 -0800 Subject: [PATCH] Fix path parsing on Windows (non-unix) --- packages/find-dependencies/src/utils.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/find-dependencies/src/utils.js b/packages/find-dependencies/src/utils.js index f452ec5..d5d5779 100644 --- a/packages/find-dependencies/src/utils.js +++ b/packages/find-dependencies/src/utils.js @@ -1,18 +1,20 @@ import fs from 'fs'; import path from 'path'; +const unixSep = '/'; + /** * @param {string} p * @returns {string} */ -const toUnix = p => p.replace(/\\/g, '/'); +const toUnix = p => p.replace(/\\/g, unixSep); /** * @param {number} depth * @param {{ cwd:string }} [opts] * @returns {string[]} */ - export function traverseUp(depth, { cwd = process.cwd() }) { +export function traverseUp(depth, { cwd = process.cwd() }) { return Array(depth).fill().map((_, i) => path.join(cwd, ...Array(i).fill('..'))); } @@ -44,14 +46,14 @@ export function extractPackageNameFromSpecifier(specifier) { * @example '@foo/bar' * @example '@foo/bar/baz.js' */ - const split = specifier.split('/'); - return [split[0], split[1]].join('/'); + const split = specifier.split(unixSep); + return [split[0], split[1]].join(unixSep); } else { /** * @example 'foo' * @example 'foo/bar/baz.js' */ - return specifier.split('/')[0]; + return specifier.split(unixSep)[0]; } } @@ -70,10 +72,10 @@ const getPackageRootAndName = memoize((potentialRoot) => { const splitPathForResolvedSymlinks = memoize((unixPath) => { // Given ['','path','to','monorepo','pkg','src'], iterate till /path/to/monorepo/pkg is found - const parts = path.dirname(unixPath).split(path.sep); + const parts = path.dirname(unixPath).split(unixSep); for (let i = 0; i < parts.length; i += 1) { const consideredParts = i > 0 ? parts.slice(0, -i) : parts; - const potentialRoot = consideredParts.join(path.sep); + const potentialRoot = consideredParts.join(unixSep); const packageOutput = getPackageRootAndName(potentialRoot); if (packageOutput) { return {