1 | 'use strict';
|
2 |
|
3 | var cwd = process.cwd();
|
4 | var path = require('path');
|
5 | var node_modules = 'node_modules';
|
6 | var utils = require('modulex-util');
|
7 | var packages = {
|
8 | 'es5Shim': 1,
|
9 | 'normalize': 'normalize.css',
|
10 | 'consolePolyfill': 1,
|
11 | 'modulex': 1,
|
12 | 'nodeJscover': 1,
|
13 | 'mocha': 1,
|
14 | 'highlight.js': 1
|
15 | };
|
16 |
|
17 | function deCamelCase(m) {
|
18 | return '-' + m.toLowerCase();
|
19 | }
|
20 |
|
21 | for (var p in packages) {
|
22 | var name = p;
|
23 | if (typeof packages[p] === 'string') {
|
24 | name = packages[p];
|
25 | } else {
|
26 | name = name.replace(/[A-Z]/g, deCamelCase);
|
27 | }
|
28 | packages[p] = findPackage(name);
|
29 | }
|
30 | packages.highlightJs = packages['highlight.js'];
|
31 |
|
32 | function findPackage(packageName) {
|
33 | var file = require.resolve(packageName);
|
34 | var dir = path.dirname(file);
|
35 | var lastDir = dir;
|
36 | while (!utils.endsWith(dir, node_modules)) {
|
37 | lastDir = dir;
|
38 | dir = path.resolve(dir, '../');
|
39 | }
|
40 | var url = path.relative(cwd, lastDir);
|
41 | if (!utils.startsWith(url, node_modules)) {
|
42 | url = path.join(node_modules, url);
|
43 | }
|
44 | return url;
|
45 | }
|
46 |
|
47 | module.exports = {
|
48 | findPackage: findPackage,
|
49 |
|
50 | getPackages: function () {
|
51 | return packages;
|
52 | }
|
53 | };
|