1 | var path = require('path')
|
2 | var fs = require('fs')
|
3 |
|
4 | module.exports = versions
|
5 |
|
6 | function versions(child) {
|
7 | if (!child.children) return
|
8 | if (child.path) return child.children.forEach(versions)
|
9 | if (!child.children.length) return
|
10 |
|
11 | var first = null
|
12 | for (var i = 0; i < child.children.length; i++) {
|
13 | if (first = child.children[i].path) break
|
14 | }
|
15 |
|
16 | if (!first) return child.children.forEach(versions)
|
17 |
|
18 | child.path = path.resolve(first, '..')
|
19 |
|
20 | var pkgFile = path.resolve(child.path, 'package.json')
|
21 |
|
22 | if (!fs.existsSync(pkgFile)) return
|
23 |
|
24 | try {
|
25 | var version = JSON.parse(
|
26 | fs.readFileSync(pkgFile, 'utf8')
|
27 | ).version
|
28 | } catch(e) { return }
|
29 |
|
30 | child.name += '@'
|
31 | child.name += version
|
32 | child.children.forEach(versions)
|
33 | }
|