Skip to content

Commit

Permalink
move splitPackageNames to its own module
Browse files Browse the repository at this point in the history
  • Loading branch information
nlf committed Dec 15, 2020
1 parent a9c4b15 commit d6817f0
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 0 deletions.
23 changes: 23 additions & 0 deletions lib/utils/split-package-names.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
'use strict'

const splitPackageNames = (path) => {
return path.split('/')
// combine scoped parts
.reduce((parts, part) => {
if (parts.length === 0)
return [part]

const lastPart = parts[parts.length - 1]
// check if previous part is the first part of a scoped package
if (lastPart[0] === '@' && !lastPart.includes('/'))
parts[parts.length - 1] += '/' + part
else
parts.push(part)

return parts
}, [])
.join('/node_modules/')
.replace(/(\/node_modules)+/, '/node_modules')
}

module.exports = splitPackageNames
17 changes: 17 additions & 0 deletions test/lib/utils/split-package-names.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
'use strict'

const { test } = require('tap')
const splitPackageNames = require('../../../lib/utils/split-package-names.js')

test('splitPackageNames', t => {
const assertions = [
['semver', 'semver'],
['read-pkg/semver', 'read-pkg/node_modules/semver'],
['@npmcli/one/@npmcli/two', '@npmcli/one/node_modules/@npmcli/two'],
['@npmcli/one/semver', '@npmcli/one/node_modules/semver'],
]

for (const [input, expected] of assertions)
t.equal(splitPackageNames(input), expected, `split ${input} correctly`)
t.end()
})

0 comments on commit d6817f0

Please sign in to comment.