Novel Preposterous Mockery

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

    Install

    npm i atm0-get-deps

    DownloadsWeekly Downloads

    3

    Version

    0.0.1

    License

    ISC

    Last publish

    Collaborators

    • vaseala.com