diff --git a/src/cli-scripts/add.ts b/src/cli-scripts/add.ts index faea402..0c7b522 100644 --- a/src/cli-scripts/add.ts +++ b/src/cli-scripts/add.ts @@ -10,12 +10,8 @@ import { readJSON, runExec, writePrettyJSON } from './common'; export async function doAdd(taskInfoMessageProvider: TaskInfoProvider): Promise { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const usersProjectDir = process.env.CAPACITOR_ROOT_DIR!; - const platformNodeModuleTemplateTar = join( - usersProjectDir, - 'node_modules', - '@capacitor-community', - 'electron', - 'template.tar.gz' + const platformNodeModuleTemplateTar = require.resolve( + ['@capacitor-community', 'electron', 'template.tar.gz'].join('/') ); const destDir = join(usersProjectDir, 'electron'); let usersProjectCapConfigFile: string | undefined = undefined; diff --git a/src/cli-scripts/common.ts b/src/cli-scripts/common.ts index 9ddb73f..58ac241 100644 --- a/src/cli-scripts/common.ts +++ b/src/cli-scripts/common.ts @@ -91,8 +91,7 @@ export function getDependencies(packageJson: PackageJson): string[] { export async function resolvePlugin(name: string): Promise { try { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const usersProjectDir = process.env.CAPACITOR_ROOT_DIR!; - const packagePath = resolveNode(usersProjectDir, name, 'package.json'); + const packagePath = resolveNode(name); if (!packagePath) { console.error( `\nUnable to find ${chalk.bold(`node_modules/${name}`)}.\n` + `Are you sure ${chalk.bold(name)} is installed?` @@ -121,12 +120,19 @@ export async function resolvePlugin(name: string): Promise { return null; } -export function resolveNode(root: string, ...pathSegments: string[]): string | null { +export function resolveNode(pkg: string): string | null { try { - const t = require.resolve(pathSegments.join('/'), { paths: [root] }); - //console.log(t); + const t = require.resolve([pkg, 'package.json'].join('/')); + // console.log(t); return t; } catch (e) { + try { + const entrypoint = require.resolve(pkg); + const resolved = entrypoint.slice(0, entrypoint.search(pkg) + pkg.length); + return [resolved, 'package.json'].join('/'); + } catch { + return null; + } return null; } }