fingerpan / vue-cli-plugin-dll

Vue CLI 3 plugin for Webpack DllPlugin/DllReferencePlugin
MIT License
76 stars 22 forks source link

你好,dll在inject到html的时候不能指定路径吗? #19

Closed ChaseChan closed 5 years ago

ChaseChan commented 5 years ago
<script type=text/javascript src=js/dll.361f1b50.dll.js>

这是打包后自动注入到html后的路径,另外在vue-cli中执行npm run build之后,会重复打以此dll.xxx.js包在dist目录下

请问这两个问题怎么解决呢?

fingerpan commented 5 years ago
  1. 为了是资源位置一致性 目前资源会统一归类,npm run build 后,css文件会在css文件夹下,js会在js文件夹下。这个基于vue-cli的output来做的。所以,路径目前不支持指定。想问一下,你想要指定的需求是想把dll生成的文件归类在一个文件夹下吗?
  2. 目前我这边自测多次都没有发现重复打包在dist文件夹下的问题,你的版本是多少呢?你可以把你的配置信息和打包后的dist文件明细截图发一下吗?
ChaseChan commented 5 years ago

"vue-cli-plugin-dll": "^1.1.5" 我意思是,首先要先跑一遍npm run dll

  pluginOptions: {
    dll: {
      entry: ["vue", "vue-router", "axios", "element-ui", "echarts", "vuex"],
      output: path.join(__dirname, "js"),
      open: process.env.NODE_ENV === "production"
    }
  },

这是在vue.config.js的配置,然后就会在项目的目录下打出一个js文件夹 image

然后再运行npm run build之后

image

会发现打出来的包也有这个js。

对于第一个问题,我是想指定dll文件的注入路径,比如说 默认打出来并且inject到index.html的dll文件路径是:src=js/dll.361f1b50.dll.js 我想自定义为src=/dll/dll.361f1b50.dll.js,不然的话只能遵循打出来的路径去读取dll文件的话,限制会有点大。

fingerpan commented 5 years ago
  1. 关于你说的 “重复打包”问题,其实并不是重复打包,而是本身的机制就是这样子的。执行dll命令也是一个打包过程,这个时候打包出来的文件需要找一个位置存储,而你指定了ouput的目录为js,所以你的根目录会有一个js文件夹。在执行build命令是一次全打包,(这一次才是构建生产环境的代码),会把dll打包的东西也放在了dist文件夹下。建议你的 output参数不传递,默认打包到public/dll 文件夹下。
  2. 很抱歉,目前是不支持指定路径的,你的建议我会评估一下。因为这个涉及到资源的引用问题,在资源多的情况可能会出现一些资源引用混乱的问题,但同时也会像你所说的没有资源统一规划的问题,所以需要评估一下。如果可行,我将采用output的指定目录文件夹作为指定路径来做。
ChaseChan commented 5 years ago

@fingerpan 好的,谢谢解答