diff --git a/src/api/install.ts b/src/api/install.ts index b22a53e76d..16046a77fa 100644 --- a/src/api/install.ts +++ b/src/api/install.ts @@ -5,7 +5,7 @@ import pLimit = require('p-limit') import npa = require('npm-package-arg') import symlinkDir from 'symlink-dir' import pFilter = require('p-filter') -import getLinkTarget = require('get-link-target') +import isInnerLink from '../isInnerLink' import {PnpmOptions, StrictPnpmOptions, Dependencies} from '../types' import createGot from '../network/got' import getContext, {PnpmContext} from './getContext' @@ -236,23 +236,6 @@ async function installInContext ( } } -async function isInnerLink (modules: string, depName: string) { - let linkTarget: string - try { - const linkPath = path.join(modules, depName) - linkTarget = await getLinkTarget(linkPath) - } catch (err) { - if (err.code === 'ENOENT') return true - throw err - } - - if (linkTarget.startsWith(modules)) { - return true - } - logger.info(`${depName} is linked to ${modules} from ${linkTarget}`) - return false -} - async function createInstallCmd (opts: StrictPnpmOptions, shrinkwrap: Shrinkwrap): Promise { return { installs: {}, diff --git a/src/isInnerLink.ts b/src/isInnerLink.ts new file mode 100644 index 0000000000..d38b1c32b6 --- /dev/null +++ b/src/isInnerLink.ts @@ -0,0 +1,20 @@ +import logger from 'pnpm-logger' +import path = require('path') +import getLinkTarget = require('get-link-target') + +export default async function isInnerLink (modules: string, depName: string) { + let linkTarget: string + try { + const linkPath = path.join(modules, depName) + linkTarget = await getLinkTarget(linkPath) + } catch (err) { + if (err.code === 'ENOENT') return true + throw err + } + + if (linkTarget.startsWith(modules)) { + return true + } + logger.info(`${depName} is linked to ${modules} from ${linkTarget}`) + return false +} diff --git a/tsconfig.json b/tsconfig.json index 1e41b35266..151ac3769d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -60,8 +60,10 @@ "src/index.ts", "src/install/fetch.ts", "src/install/fetchResolution.ts", + "src/install/getIsInstallable.ts", "src/install/installMultiple.ts", "src/install/postInstall.ts", + "src/isInnerLink.ts", "src/link/index.ts", "src/link/linkBins.ts", "src/link/linkPeers.ts",