forked from taptapship/wiredep
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrequire-wiredep.js
More file actions
84 lines (69 loc) · 2.26 KB
/
require-wiredep.js
File metadata and controls
84 lines (69 loc) · 2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
'use strict';
var $ = {
_: require('lodash'),
'bower-config': require('bower-config'),
chalk: require('chalk'),
fs: require('fs'),
glob: require('glob'),
lodash: require('lodash'),
path: require('path'),
through2: require('through2')
};
var helpers = require('./lib/helpers');
var fileTypesDefault = require('./lib/default-file-types');
/**
* Wire up the html files with the Bower packages.
*
* @param {object} config the global configuration object
*/
function require_wiredep(opts) {
opts = opts || {};
var cwd = opts.cwd ? $.path.resolve(opts.cwd) : process.cwd();
var config = module.exports.config = helpers.createStore();
var requirePath = $.path.join(cwd, './require-config.js');
var requireConfig;
if (!!opts.requireUrl) {
requireConfig = require($.path.join(cwd, opts.requireUrl));
} else if (!!opts.requireConfig) {
requireConfig = opts.requireConfig;
} else if ($.fs.existsSync(requirePath)) {
requireConfig = require(requirePath);
}
config.set
('require.config', requireConfig)
('cwd', cwd)
('detectable-file-types', [])
('file-types', mergeFileTypesWithDefaults(opts.fileTypes))
('src', [])
('generateFile', opts.generateFile || [])
('stream', opts.stream ? opts.stream : {})
('warnings', []);
if (!opts.stream && opts.src) {
(Array.isArray(opts.src) ? opts.src : [opts.src]).
forEach(function (pattern) {
config.set('src', config.get('src').concat($.glob.sync(pattern)));
});
}
require('./lib/require-structure-generator')(config);
require('./lib/inject-dependencies')(config);
if (config.get('warnings')) {
helpers.warn(config.get('warnings'));
}
return true;
}
function mergeFileTypesWithDefaults(optsFileTypes) {
var fileTypes = $._.clone(fileTypesDefault, true);
$._(optsFileTypes).each(function (fileTypeConfig, fileType) {
fileTypes[fileType] = fileTypes[fileType] || {};
$._.each(fileTypeConfig, function (config, configKey) {
if ($._.isPlainObject(fileTypes[fileType][configKey])) {
fileTypes[fileType][configKey] =
$._.assign(fileTypes[fileType][configKey], config);
} else {
fileTypes[fileType][configKey] = config;
}
});
});
return fileTypes;
}
module.exports = require_wiredep;