nonzzz / vite-plugin-cdn

replace module with CDN. work with vite.
MIT License
75 stars 6 forks source link

使用unpkg.com错误 #21

Closed jian-jiu closed 1 year ago

jian-jiu commented 1 year ago

cdn({ url: 'https://unpkg.com', modules: ['vue', 'vue-demi', 'vue-router'], resolve: (base, { name, version }) => { return ${base}/${name}@${version} } })

打包后为下面所示,是link 标签而不是script标签

\<link href="https://unpkg.com/vuexxx... \<link href="https://unpkg.com/vue-demixxx... \<link href="https://unpkg.com/vue-routerxxx...

看源码是判断了下面的返回值后缀是否带.js,只有带了才是script. 但是我不想去带上.js resolve: (base, { name, version }) => { return ${base}/${name}@${version} }

nonzzz commented 1 year ago

我不是很理解为什么不想带上后缀。

nonzzz commented 1 year ago

如果你不想携带后缀那么你不需要修改resolve。而是在transform 这个hook里面操作所有的script就行。然后针对vue 这些你想换成生产环境去批量替换

nonzzz commented 1 year ago

不使用resolve 采用

 transform() {
          return {
            script: (node) => {
              node.url = new Set([...node.url.keys()].map(url => path.dirname(url)))
            }
          }
 }
nonzzz commented 1 year ago

resolve 一般是给非jsdelivrunpkg 用户使用的。