atm-get-deps
v2.0.10
Published
atm里面自带的获取入口文件依赖的模块
Downloads
8
Readme
atm-get-deps
###css依赖顺序的解析
// login.css的依赖
[
'account.css'
]
// account.css的依赖
[
'reset.css', //重置样式
'dialog.css', //弹窗
'validator.css' //验证
]
// dialog.css的依赖
[
'reset.css'
]
// reset.css & validator.css 没有依赖
###加载顺序规则解释
// login依赖account
// 因此第一步的依赖为
var deps = [
'account.css'
]
// account.css依赖 reset.css, dialog.css, validator.css
// 顺序应该是
deps = [
'reset.css.deps',
'reset.css',
'dialog.css.deps',
'dialog.css',
'validator.css.deps',
'validator.css',
'account.css'
]
// 即依赖顺序为
deps = [
// reset.css.deps为null
'reset.css',
'reset.css', // dialog.css.deps
'dialog.css',
//validator.css.deps为null
'validator.css',
'account.css'
]
// 去重得到最终依赖顺序
deps = [
'reset.css',
'dialog.css',
'validator.css',
'account.css'
]
,因此顺序是: account.css login.css
// login
[
'reset.css',
'validator.css',
'dialog.css',
'account.css'
]
var deps = [];
// 获取一个文件的依赖
function getDeps (file) {
deps.unshift(file);
// 如果文件有依赖
if (fileDeps.length) {
deps = fileDeps.concat(file);
//
fileDeps.reverse().forEach(function (depFile) {
getDeps(depFile);
});
}
}
// 对deps进行去重处理
function unique (arr) {
var obj = {},
newArr = [];
arr.forEach(function (id) {
if (!obj[id]) {
newArr.push(id);
}
obj[id] = true;
});
return newArr;
}