diff --git a/package-lock.json b/package-lock.json index 96b44eeb55..ef1c976466 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1525,6 +1525,29 @@ "p-map": "^2.0.0", "pify": "^4.0.1", "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + } } }, "detect-indent": { @@ -1714,27 +1737,6 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, "got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", diff --git a/package.json b/package.json index 818dd99559..91049b0b4e 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "@babel/preset-env": "^7.5.5", "@pika/cli": "latest", "chalk": "^2.4.2", + "glob": "^7.1.4", "is-builtin-module": "^3.0.0", "mkdirp": "^0.5.1", "ora": "^3.1.0", diff --git a/src/index.ts b/src/index.ts index adf55200fe..8a3c2010de 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,6 +3,7 @@ import path from 'path'; import rimraf from 'rimraf'; import mkdirp from 'mkdirp'; import chalk from 'chalk'; +import glob from 'glob'; import ora from 'ora'; import yargs from 'yargs-parser'; @@ -170,11 +171,23 @@ export async function install( ) { const knownNamedExports = {...namedExports}; const remotePackageMap = fromEntries(remotePackages); + const depList: Set = new Set(); + arrayOfDeps.forEach(dep => { + if (!glob.hasMagic(dep)) { + depList.add(dep); + } else { + const globLoc = path.join(cwd, 'node_modules', dep); + glob.sync(globLoc).forEach(globDep => { + const depPath = path.relative(`${cwd}/node_modules`, globDep); + depList.add(depPath); + }); + } + }); for (const filePath of PACKAGES_TO_AUTO_DETECT_EXPORTS) { knownNamedExports[filePath] = knownNamedExports[filePath] || detectExports(filePath) || []; } - if (arrayOfDeps.length === 0) { + if (depList.size === 0) { logError('no dependencies found.'); return; } @@ -191,7 +204,7 @@ export async function install( const assetObject: {[depName: string]: string} = {}; const importMap = {}; const skipFailures = !isExplicit; - for (const dep of arrayOfDeps) { + for (const dep of depList) { try { const depName = getWebDependencyName(dep); const { type: depType, loc: depLoc } = resolveWebDependency(dep, isExplicit, isOptimized);