Skip to content

Commit ee41b3a

Browse files
committed
feat: added scope option and use npm name suggestion package
1 parent 4586e41 commit ee41b3a

File tree

3 files changed

+17
-9
lines changed

3 files changed

+17
-9
lines changed

index.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,15 @@ function initOpts () {
5454
message: 'Package name:',
5555
validate: npm.validatePackageName,
5656
default: (promptInput, allInput) => {
57-
return packageName(allInput.name, allInput.cwd)
57+
return packageName(allInput.name, allInput.scope, allInput.cwd)
5858
}
5959
}
6060
},
61+
scope: {
62+
type: 'string',
63+
description: 'Set a scope to be used when suggesting a package name',
64+
prompt: false
65+
},
6166
version: {
6267
type: 'string',
6368
flag: {

lib/package-name.js

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
'use strict'
2-
const path = require('path')
32
const npa = require('npm-package-arg')
3+
const nameFromFolder = require('@npmcli/name-from-folder')
44

5-
module.exports = function scopeAndName (_name, cwd) {
5+
module.exports = function scopeAndName (_name, _scope, cwd) {
66
let name = _name
7+
const scope = _scope
78
if (!name) {
8-
const baseName = path.basename(cwd)
9-
const scope = path.basename(path.dirname(cwd))
10-
if (scope.startsWith('@')) {
11-
name = `${scope}/${baseName}`
12-
} else {
13-
name = baseName
9+
name = nameFromFolder(cwd)
10+
}
11+
if (scope) {
12+
if (name.startsWith('@')) {
13+
const [, n] = name.split('/')
14+
name = n
1415
}
16+
name = `${scope}/${name}`
1517
}
1618
return npa(name).name
1719
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
},
3434
"license": "ICS",
3535
"dependencies": {
36+
"@npmcli/name-from-folder": "^1.0.1",
3637
"fs-extra": "^9.0.1",
3738
"loggerr": "^3.0.0",
3839
"npm-package-arg": "^8.0.1",

0 commit comments

Comments
 (0)