Skip to content

Commit 3d3ee0b

Browse files
committed
fix: quote package names, resolves #64
1 parent 12dfcf8 commit 3d3ee0b

File tree

1 file changed

+18
-17
lines changed

1 file changed

+18
-17
lines changed

src/install-peerdeps.js

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,16 @@ const spawnCommand = (command, args) => {
4242
let stdout = "";
4343
let stderr = "";
4444
const cmdProcess = spawn(command + extra, args, {
45-
cwd: process.cwd()
45+
cwd: process.cwd(),
4646
});
47-
cmdProcess.stdout.on("data", chunk => {
47+
cmdProcess.stdout.on("data", (chunk) => {
4848
stdout += chunk;
4949
});
50-
cmdProcess.stderr.on("data", chunk => {
50+
cmdProcess.stderr.on("data", (chunk) => {
5151
stderr += chunk;
5252
});
5353
cmdProcess.on("error", reject);
54-
cmdProcess.on("exit", code => {
54+
cmdProcess.on("exit", (code) => {
5555
if (code === 0) {
5656
resolve(stdout);
5757
} else {
@@ -95,7 +95,7 @@ function findPackageVersion({ data, version }) {
9595
function getPackageData({ packageName, packageManager, version }) {
9696
const pkgString = version ? `${packageName}@${version}` : packageName;
9797
const args = ["info", pkgString, "--json"];
98-
return spawnCommand(packageManager, args).then(response => {
98+
return spawnCommand(packageManager, args).then((response) => {
9999
const parsed = JSON.parse(response);
100100
// Yarn returns with an extra nested { data } that NPM doesn't
101101
return parsed.data || parsed;
@@ -125,19 +125,19 @@ function getPackageJson({ packageName, noRegistry, packageManager, version }) {
125125

126126
// Remote registry
127127
return getPackageData({ packageName, packageManager, version })
128-
.then(data => {
128+
.then((data) => {
129129
return Promise.resolve(
130130
findPackageVersion({
131131
data,
132-
version
132+
version,
133133
})
134134
);
135135
})
136-
.then(version => {
136+
.then((version) => {
137137
return getPackageData({
138138
packageName,
139139
packageManager,
140-
version
140+
version,
141141
});
142142
});
143143
}
@@ -191,14 +191,14 @@ function installPeerDeps(
191191
onlyPeers,
192192
silent,
193193
dryRun,
194-
extraArgs
194+
extraArgs,
195195
},
196196
cb
197197
) {
198198
getPackageJson({ packageName, noRegistry, packageManager, version })
199199
// Catch before .then because the .then is so long
200-
.catch(err => cb(err))
201-
.then(data => {
200+
.catch((err) => cb(err))
201+
.then((data) => {
202202
// Get peer dependencies for max satisfying version
203203
const peerDepsVersionMap = data.peerDependencies;
204204
if (typeof peerDepsVersionMap === "undefined") {
@@ -213,10 +213,10 @@ function installPeerDeps(
213213
// only its peers.
214214
let packagesString = onlyPeers ? "" : `${packageName}@${data.version}`;
215215

216-
const packageList = Object.keys(peerDepsVersionMap).map(name =>
216+
const packageList = Object.keys(peerDepsVersionMap).map((name) =>
217217
getPackageString({
218218
name,
219-
version: peerDepsVersionMap[name]
219+
version: peerDepsVersionMap[name],
220220
})
221221
);
222222

@@ -247,7 +247,8 @@ function installPeerDeps(
247247
// Remove -0
248248
return packageName.substr(0, packageName.length - 2);
249249
}
250-
return packageName;
250+
// Fix #64 -- add quotes
251+
return `"${packageName}"`;
251252
}
252253
// If we have spaces in our args spawn()
253254
// cries foul so we'll split the packagesString
@@ -287,7 +288,7 @@ function installPeerDeps(
287288
// There's a bug with Yarn 1.0 in which an empty arg
288289
// causes the install process to fail with a "malformed
289290
// response from the registry" error
290-
args = args.filter(a => a !== "");
291+
args = args.filter((a) => a !== "");
291292

292293
// Show user the command that's running
293294
const commandString = `${packageManager} ${args.join(" ")}\n`;
@@ -301,7 +302,7 @@ function installPeerDeps(
301302
console.log(commandString);
302303
spawnCommand(packageManager, args)
303304
.then(() => cb(null))
304-
.catch(err => cb(err));
305+
.catch((err) => cb(err));
305306
}
306307
});
307308
}

0 commit comments

Comments
 (0)