chainWebpack: config => { config.plugins.delete('preload') config.plugins.delete('prefetch') //svg rule loader config.output.filename('[name].[hash].js').end() const svgRule = config.module.rule('svg')//找到svg-loader svgRule.uses.clear()//清除已有的loader,如果不这样做会添加在此loader之后 svgRule.exclude.add(/node_modules/)//正则匹配排除node_modules目录 svgRule//添加svg新的loader处理 .test(/\.svg$/) .use('svg-sprite-loader') .loader('svg-sprite-loader') .options({ symbolId: 'icon-[name]' })
//修改images loader 添加svg处理 const imagesRule = config.module.rule('images') imagesRule.exclude.add(resolve('src/icons')) config.module .rule('images') .test(/\.(png|jpe?g|gif|svg)(\?.*)?$/)
config.module .rule('fonts') .test(/\.(woff?|eot|ttf|otf)(\?.*)?$/) .use('url-loader') .loader('url-loader') .options({ limit: 1000 }) }, configureWebpack: (config) => { config["externals"]={ BMap:"BMap" }; // 判断是否进行预渲染 if (process.env.NODE_ENV !== "dev1") return; return { plugins: [ new PrerenderSPAPlugin({ // 生成文件的路径,也可以与webpakc打包的一致。 // 下面这句话非常重要!!! // 这个目录只能有一级,如果目录层次大于一级,在生成的时候不会有任何错误提示,在预渲染的时候只会卡着不动。 staticDir: path.join(__dirname, 'dist'), indexPath: path.join(__dirname, 'dist', 'index.html'), // 对应自己的路由文件,比如a有参数,就需要写成 /a/param1。 // routes: ['/homepage', '/about/lincoln-way', '/vehicles', '/vehiclesDetail', '/forms/request-test-drive', '/locate-dealer', '/my-lincoln/my-profile', '/merchandise', '/finance'], routes: ['/homepage', '/about/lincoln-way', '/vehiclesDetail'], // 这个很重要,如果没有配置这段,也不会进行预编译 renderer: new Renderer({ inject: { foo: 'bar' }, headless: true, // 在 main.js 中 document.dispatchEvent(new Event('render-event')),两者的事件名称要对应上。 renderAfterDocumentEvent: 'render-event' }) }) ] }; } };