Skip to content

Commit 012363e

Browse files
donaldpipowitchstephenplusplus
authored andcommitted
get prioritized dependencies dynamically
1 parent 0353b8c commit 012363e

File tree

9 files changed

+1560
-96
lines changed

9 files changed

+1560
-96
lines changed

lib/detect-dependencies.js

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,7 @@ var gatherInfo = function (config) {
104104
var warnings = config.get('warnings');
105105

106106
var mains = findMainFiles(config, component, componentConfigFile);
107-
var fileTypes = _.chain(mains).map(function (main) {
108-
return path.extname(main);
109-
}).unique().value();
107+
var fileTypes = _.chain(mains).map(path.extname).unique().value();
110108

111109
dep.main = mains;
112110
dep.type = fileTypes;
@@ -308,11 +306,16 @@ module.exports = function detect(config) {
308306

309307
_.each(allDependencies, gatherInfo(config));
310308

311-
config.set('global-dependencies-sorted', filterExcludedDependencies({
312-
js: prioritizeDependencies(config, '.js'),
313-
css: prioritizeDependencies(config, '.css'),
314-
scss: prioritizeDependencies(config, '.scss')
315-
}, config.get('exclude')));
309+
config.set('global-dependencies-sorted', filterExcludedDependencies(
310+
config.get('detectable-file-types').
311+
reduce(function (acc, fileType) {
312+
if (!acc[fileType]) {
313+
acc[fileType] = prioritizeDependencies(config, '.' + fileType);
314+
}
315+
return acc;
316+
}, {}),
317+
config.get('exclude')
318+
));
316319

317320
return config;
318321
};

lib/inject-dependencies.js

Lines changed: 9 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -10,82 +10,12 @@
1010

1111
var fs = require('fs');
1212
var path = require('path');
13-
var _ = require('lodash');
1413
var chalk = require('chalk');
1514

1615
var globalDependenciesSorted;
1716
var ignorePath;
1817
var fileTypes;
1918

20-
var fileTypesDefault = {
21-
html: {
22-
block: /(([ \t]*)<!--\s*bower:*(\S*)\s*-->)(\n|\r|.)*?(<!--\s*endbower\s*-->)/gi,
23-
detect: {
24-
js: /<script.*src=['"](.+)['"]>/gi,
25-
css: /<link.*href=['"](.+)['"]/gi
26-
},
27-
replace: {
28-
js: '<script src="{{filePath}}"></script>',
29-
css: '<link rel="stylesheet" href="{{filePath}}" />'
30-
}
31-
},
32-
33-
jade: {
34-
block: /(([ \t]*)\/\/\s*bower:*(\S*))(\n|\r|.)*?(\/\/\s*endbower)/gi,
35-
detect: {
36-
js: /script\(.*src=['"](.+)['"]>/gi,
37-
css: /link\(href=['"](.+)['"]/gi
38-
},
39-
replace: {
40-
js: 'script(src=\'{{filePath}}\')',
41-
css: 'link(rel=\'stylesheet\', href=\'{{filePath}}\')'
42-
}
43-
},
44-
45-
sass: {
46-
block: /(([ \t]*)\/\/\s*bower:*(\S*))(\n|\r|.)*?(\/\/\s*endbower)/gi,
47-
detect: {
48-
css: /@import\s['"](.+)['"]/gi,
49-
sass: /@import\s['"](.+)['"]/gi,
50-
scss: /@import\s['"](.+)['"]/gi
51-
},
52-
replace: {
53-
css: '@import {{filePath}}',
54-
sass: '@import {{filePath}}',
55-
scss: '@import {{filePath}}'
56-
}
57-
},
58-
59-
scss: {
60-
block: /(([ \t]*)\/\/\s*bower:*(\S*))(\n|\r|.)*?(\/\/\s*endbower)/gi,
61-
detect: {
62-
css: /@import\s['"](.+)['"]/gi,
63-
sass: /@import\s['"](.+)['"]/gi,
64-
scss: /@import\s['"](.+)['"]/gi
65-
},
66-
replace: {
67-
css: '@import "{{filePath}}";',
68-
sass: '@import "{{filePath}}";',
69-
scss: '@import "{{filePath}}";'
70-
}
71-
},
72-
73-
yaml: {
74-
block: /(([ \t]*)#\s*bower:*(\S*))(\n|\r|.)*?(#\s*endbower)/gi,
75-
detect: {
76-
js: /-\s(.+)/gi,
77-
css: /-\s(.+)/gi
78-
},
79-
replace: {
80-
js: '- {{filePath}}',
81-
css: '- {{filePath}}'
82-
}
83-
}
84-
};
85-
86-
fileTypesDefault.yml = fileTypesDefault.yaml;
87-
fileTypesDefault.htm = fileTypesDefault.html;
88-
fileTypesDefault['default'] = fileTypesDefault.html;
8919

9020
/**
9121
* Find references already on the page, not in a Bower block.
@@ -154,11 +84,16 @@ var injectScripts = function (filePath) {
15484
var fileType = fileTypes[fileExt] || fileTypes['default'];
15585
var returnType = /\r\n/.test(contents) ? '\r\n' : '\n';
15686

157-
fs.writeFileSync(filePath, contents.replace(
87+
var newContents = contents.replace(
15888
fileType.block,
15989
replaceIncludes(filePath, fileType, returnType)
160-
));
161-
console.log('File ' + chalk.cyan(filePath) + ' modified.');
90+
);
91+
92+
if (contents !== newContents) {
93+
fs.writeFileSync(filePath, newContents);
94+
95+
console.log(chalk.cyan(filePath) + ' modified.');
96+
}
16297
};
16398

16499

@@ -184,19 +119,7 @@ module.exports = function inject(config) {
184119

185120
globalDependenciesSorted = config.get('global-dependencies-sorted');
186121
ignorePath = config.get('ignore-path');
187-
fileTypes = _.clone(fileTypesDefault, true);
188-
189-
_(config.get('file-types')).each(function (fileTypeConfig, fileType) {
190-
fileTypes[fileType] = fileTypes[fileType] || {};
191-
_.each(fileTypeConfig, function (config, configKey) {
192-
if (_.isPlainObject(fileTypes[fileType][configKey])) {
193-
fileTypes[fileType][configKey] =
194-
_.assign(fileTypes[fileType][configKey], config);
195-
} else {
196-
fileTypes[fileType][configKey] = config;
197-
}
198-
});
199-
});
122+
fileTypes = config.get('file-types');
200123

201124
if (stream.src) {
202125
config.set('stream', {

test/fixture/bower.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
"modernizr": "2.6.2",
66
"codecode": "0.0.3",
77
"bootstrap": "3.0.0",
8-
"modular-scale": "2.0.3"
8+
"modular-scale": "2.0.3",
9+
"3l": "1.4.4"
910
},
1011
"devDependencies": {
1112
"things": "0.1.1"

0 commit comments

Comments
 (0)