async createSPAConfig() {
        let {globals, router, skeleton} = this.config;
        let rootDir = globals.rootDir;

        // create spa config based on client config
        return await this.webpackConfig.client({
            extendWithWebpackChain: async (clientConfig, {type}) => {
                if (type === 'client') {
                    clientConfig.name = 'spaclient';
                    clientConfig
                        .context(rootDir)
                        .entry(DEFAULT_ENTRY_NAME).add('./core/entry-client.js');

                    // add html-webpack-plugin
                    let {
                        resolvedTemplatePath: customTemplatePath,
                        tempTemplatePath
                    } = await this.addHtmlPlugin(clientConfig, router.base);
                    // let customTemplatePath = await this.addHtmlPlugin(clientConfig, router.base);

                    // add vue-skeleton-webpack-plugin
                    if (skeleton && skeleton.enable) {
                        await this.addSkeletonPlugin(clientConfig);
                    }

                    // watch template in development mode
                    if (this.isDev) {
                        // watch html
                        this.addWatcher(customTemplatePath, 'change', async () => {
                            await this.writeFileToLavasDir(
                                tempTemplatePath,
                                templateUtil.client(await readFile(customTemplatePath, 'utf8'), router.base)
                            );
                        });

                        // enable hotreload in every entry in dev mode
                        await enableHotReload(this.lavasPath(), clientConfig, true);

                        // add skeleton routes
                        if (this.skeletonEnabled) {
                            // TODO: handle skeleton routes in dev mode
                            // this.addSkeletonRoutes(spaConfig);
                        }
                    }
                }
            }
        });
    }
create a webpack config which will be compiled later

@return {Object} spaConfig webpack config for SPA