module-details-from-path
Version:
Resolve npm package details, like name and base path, given an absolute path to a file inside a package
42 lines (34 loc) • 965 B
JavaScript
var sep = require('path').sep
module.exports = function (file) {
var segments = file.split(sep)
var index = segments.lastIndexOf('node_modules')
if (index === -1) return
if (!segments[index + 1]) return
var scoped = segments[index + 1][0] === '@'
var name = scoped ? segments[index + 1] + '/' + segments[index + 2] : segments[index + 1]
var offset = scoped ? 3 : 2
var basedir = ''
var lastBaseDirSegmentIndex = index + offset - 1
for (var i = 0; i <= lastBaseDirSegmentIndex; i++) {
if (i === lastBaseDirSegmentIndex) {
basedir += segments[i]
} else {
basedir += segments[i] + sep
}
}
var path = ''
var lastSegmentIndex = segments.length - 1
for (var i2 = index + offset; i2 <= lastSegmentIndex; i2++) {
if (i2 === lastSegmentIndex) {
path += segments[i2]
} else {
path += segments[i2] + sep
}
}
return {
name: name,
basedir: basedir,
path: path
}
}