async validateSkeletonRoutes(routes, alias) {
        let currentRoute;
        let resolvedPaths = [];
        let isComponentPathResolved;
        for (let i = 0; i < routes.length; i++) {
            currentRoute = routes[i];

            if (!currentRoute.componentPath) {
                return {
                    msg: `[Lavas] componentPath for ${currentRoute.path} is required.`
                };
            }

            // try to resolve componentPath with rootDir and webpack alias
            isComponentPathResolved = false;
            resolvedPaths = [
                join(this.config.globals.rootDir, currentRoute.componentPath),
                resolveAliasPath(alias, currentRoute.componentPath)
            ];
            for (let j = 0; j < resolvedPaths.length; j++) {
                if (pathExistsSync(resolvedPaths[j])) {
                    // in Windows, normalize will replace posix.sep`/` with win32.sep`\\`
                    currentRoute.componentPath = normalize(resolvedPaths[j])
                        .replace(/\\/g, '\\\\'); // escape backslash before writing to skeleton template
                    isComponentPathResolved = true;
                    break;
                }
            }

            if (!isComponentPathResolved) {
                return {
                    msg: `[Lavas] ${currentRoute.componentPath} is not existed during the process of generating skeleton.`
                };
            }
        }
        return false;
    }
validate skeleton.router.routes

@param {Array} routes routes for skeleton
@param {Object} alias alias in webpack
@return {boolean|Object} error error