Skip to content

Commit

Permalink
fix #929
Browse files Browse the repository at this point in the history
  • Loading branch information
sandy081 committed Feb 14, 2024
1 parent 6e959ca commit aaf20a8
Show file tree
Hide file tree
Showing 31 changed files with 1,077 additions and 19 deletions.
14 changes: 4 additions & 10 deletions src/npm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,18 +64,12 @@ async function checkNPM(cancellationToken?: CancellationToken): Promise<void> {
}
}

function getNpmDependencies(cwd: string): Promise<SourceAndDestination[]> {
function getNpmDependencies(cwd: string): Promise<string[]> {
return checkNPM()
.then(() =>
exec('npm list --production --parseable --depth=99999 --loglevel=error', { cwd, maxBuffer: 5000 * 1024 })
)
.then(({ stdout }) => stdout.split(/[\r\n]/).filter(dir => path.isAbsolute(dir))
.map(dir => {
return {
src: dir,
dest: path.relative(cwd, dir)
}
}));
.then(({ stdout }) => stdout.split(/[\r\n]/).filter(dir => path.isAbsolute(dir)));
}

export interface YarnDependency {
Expand Down Expand Up @@ -229,11 +223,11 @@ export async function getDependencies(
manifest: Manifest,
dependencies: 'npm' | 'yarn' | 'none' | undefined,
packagedDependencies?: string[]
): Promise<SourceAndDestination[]> {
): Promise<Array<SourceAndDestination |string>> {
const root = findWorkspaceRoot(cwd) || cwd;

if (dependencies === 'none') {
return [{ src: root, dest: '' }];
return [cwd];
} else if (dependencies === 'yarn' || (dependencies === undefined && (await detectYarn(root)))) {
return await getYarnDependencies(cwd, root, manifest, packagedDependencies);
} else {
Expand Down
23 changes: 17 additions & 6 deletions src/package.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1572,12 +1572,23 @@ async function collectAllFiles(
): Promise<SourceAndDestination[]> {
const deps = await getDependencies(cwd, manifest, dependencies, dependencyEntryPoints);
const promises = deps.map(dep =>
promisify(glob)('**', { cwd: dep.src, nodir: true, dot: true, ignore: 'node_modules/**' }).then(files =>
files.map(f => ({
src: path.relative(cwd, path.join(dep.src, f)).replace(/\\/g, '/'),
dest: path.join(dep.dest, f).replace(/\\/g, '/')
}))
)
promisify(glob)('**', { cwd: typeof dep === 'string' ? dep : dep.src, nodir: true, dot: true, ignore: 'node_modules/**' })
.then(files =>
files.map(f => {
if (typeof dep === 'string') {
const src = path.relative(cwd, path.join(dep, f)).replace(/\\/g, '/');
return {
src,
dest: src
};
} else {
return {
src: path.relative(cwd, path.join(dep.src, f)).replace(/\\/g, '/'),
dest: path.join(dep.dest, f).replace(/\\/g, '/')
};
}
})
)
);

return Promise.all(promises).then(util.flatten);
Expand Down
77 changes: 77 additions & 0 deletions src/test/fixtures/npmWorkspaces/node_modules/.package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions src/test/fixtures/npmWorkspaces/node_modules/filter-obj/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

57 changes: 57 additions & 0 deletions src/test/fixtures/npmWorkspaces/node_modules/filter-obj/readme.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions src/test/fixtures/npmWorkspaces/node_modules/in-array/LICENSE

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

76 changes: 76 additions & 0 deletions src/test/fixtures/npmWorkspaces/node_modules/in-array/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions src/test/fixtures/npmWorkspaces/node_modules/in-array/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit aaf20a8

Please sign in to comment.