getTemplatePath() {
        if (templateName) {
            return join(this.rootDir, `core/${templateName}`);
        }

        // core/ssr.html.tmpl
        let tempPath = join(this.rootDir, `core/${SSR_TEMPLATE_HTML}`);
        if (!pathExistsSync(tempPath)) {
            // core/index.html.tmpl
            tempPath = join(this.rootDir, `core/${TEMPLATE_HTML}`);
        }

        if (!pathExistsSync(tempPath)) {
            throw new Error(`${SSR_TEMPLATE_HTML} or ${TEMPLATE_HTML} required`);
        }

        templateName = basename(tempPath);
        return tempPath;
    }
get template path

@param {?string} entryName entryName when MPA, undefined when SPA & SSR
@return {string} template path