atm0-get-deps

0.0.1 • Public • Published

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;
    }
 

Readme

Keywords

Package Sidebar

Install

npm i atm0-get-deps

Weekly Downloads

1

Version

0.0.1

License

ISC

Last publish

Collaborators

  • vaseala.com