yaoyao1987 / vue-cli-multipage

vue-cli多页面应用
541 stars 140 forks source link

这个配置有点问题,不同页面会引用其他页面的js,和css #11

Closed ediaos closed 5 years ago

ediaos commented 7 years ago

如题,有人知道怎么修改配置吗

yaoyao1987 commented 7 years ago

@EDiaos ,已修改// 配置生成的html文件,定义路径等 var conf = { // filename: pathname + '.html', filename: pathname + '.html', template: pages[pathname], // 模板路径 chunks: [pathname], // 每个html引用的js模块 inject: true // js插入位置 };,即新增一个chunks: [pathname]

ediaos commented 7 years ago

@yaoyao1987 我测试了一下,build出来的html不引用 vendor和manifest 两js

ediaos commented 7 years ago

目测全打包到了对应页面的js里

ediaos commented 7 years ago

其他地方看到的解决方案:

  // 配置生成的html文件,定义路径等
  var conf = {
    filename: page + '.html',
    template: pages[page], //模板路径
    inject: true,
    // excludeChunks 允许跳过某些chunks, 而chunks告诉插件要引用entry里面的哪几个入口
    // 如何更好的理解这块呢?举个例子:比如本demo中包含两个模块(index和about),最好的当然是各个模块引入自己所需的js,
    // 而不是每个页面都引入所有的js,你可以把下面这个excludeChunks去掉,然后npm run build,然后看编译出来的index.html和about.html就知道了
    // filter:将数据过滤,然后返回符合要求的数据,Object.keys是获取JSON对象中的每个key
    excludeChunks: Object.keys(pages).filter(item => {
      return (item != page)
    })
  }

GITHUB

yaoyao1987 commented 7 years ago

将chunks: [pathname]改成chunks: [pathname, 'vendor', 'manifest']即可解决

radicalviva commented 7 years ago

@yaoyao1987 请问下 为什么生成的dist目录下 需要有 vendor.js manifest.js 这2者和我pathname.js又有什么区别呢