生成vue-router 文件

联想乐窗项目组-前端团队

/*
 * 递归同步抓取src/page  下所有一Routes.js命名的文件,最终生成src/page/allRoutes.js文件
 * */
var fs = require('fs');
var path = require('path');
var pagePath = path.join(__dirname, './src/view');
var imports = [];
var routesNames = [];
getRoutes(pagePath);
var fileString = imports.join('\n');
fileString += '\nexport default [].concat(\n    ';
fileString += routesNames.join(',\n    ');
fileString += '\n);\n';
fs.writeFileSync(path.join(__dirname, './src/allRoutes.js'), fileString);

function getRoutes(filePath, fileName, modulesName) {
    if (!modulesName) {
        modulesName = fileName;
    }

    var stat = fs.statSync(filePath);
    var isDir = stat.isDirectory();
    if (isDir) {
        var files = fs.readdirSync(filePath)
        if (files && files.length) {
            files.forEach(function (fn, index) {
                var fp = path.join(filePath, fn);
                getRoutes(fp, fn, modulesName);
            });
        }
    } else {
        if (fileName === 'routes.js') {
            var pathName = filePath.replace(pagePath, '');
            var routesPath = './view'+pathName;

            if (process.platform.indexOf('win') >= 0) {
                routesPath = routesPath.replace(/\\/g, "\/");
            }

            pathName = pathName.replace('.js', '');
            pathName = pathName.split('/');
            var pName = '';
            pathName.forEach(function (p) {
                if(p){
                    var ps = p.split('-');
                    ps.forEach(function (v) {
                        pName += v.replace(/(\w)/, function (v) {
                            return v.toUpperCase()
                        });
                    });
                }
            });
            console.log(routesPath);
            modulesName = 'modules_' + (modulesName + '').replace(/-/g, '_');
            routesNames.push(modulesName);
            imports.push("import " + modulesName + " from '"+routesPath+"';");
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值