mirror of
https://github.com/pnpm/pnpm.git
synced 2026-03-09 10:47:48 -04:00
6
.changeset/brave-donkeys-grow.md
Normal file
6
.changeset/brave-donkeys-grow.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@pnpm/package-bins": patch
|
||||
"pnpm": patch
|
||||
---
|
||||
|
||||
Allow scoped name as bin name [#7112](https://github.com/pnpm/pnpm/issues/7112).
|
||||
@@ -42,16 +42,20 @@ function commandsFromBin (bin: PackageBin, pkgName: string, pkgPath: string) {
|
||||
if (typeof bin === 'string') {
|
||||
return [
|
||||
{
|
||||
name: pkgName[0] === '@' ? pkgName.slice(pkgName.indexOf('/') + 1) : pkgName,
|
||||
name: normalizeBinName(pkgName),
|
||||
path: path.join(pkgPath, bin),
|
||||
},
|
||||
]
|
||||
}
|
||||
return Object.keys(bin)
|
||||
.filter((commandName) => encodeURIComponent(commandName) === commandName || commandName === '$')
|
||||
.filter((commandName) => encodeURIComponent(commandName) === commandName || commandName === '$' || commandName[0] === '@')
|
||||
.map((commandName) => ({
|
||||
name: commandName,
|
||||
name: normalizeBinName(commandName),
|
||||
path: path.join(pkgPath, bin[commandName]),
|
||||
}))
|
||||
.filter((cmd) => isSubdir(pkgPath, cmd.path))
|
||||
}
|
||||
|
||||
function normalizeBinName (name: string) {
|
||||
return name[0] === '@' ? name.slice(name.indexOf('/') + 1) : name
|
||||
}
|
||||
|
||||
@@ -108,3 +108,21 @@ test('skip dangerous bin locations', async () => {
|
||||
]
|
||||
)
|
||||
})
|
||||
|
||||
test('get bin from scoped bin name', async () => {
|
||||
expect(
|
||||
await getBinsFromPackageManifest({
|
||||
name: '@foo/a',
|
||||
version: '1.0.0',
|
||||
bin: {
|
||||
'@foo/a': './a',
|
||||
},
|
||||
}, process.cwd())).toStrictEqual(
|
||||
[
|
||||
{
|
||||
name: 'a',
|
||||
path: path.resolve('a'),
|
||||
},
|
||||
]
|
||||
)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user