vue-cli-plugin-vite icon indicating copy to clipboard operation
vue-cli-plugin-vite copied to clipboard

无法配置preserveSymlinks 选项

Open nailfar opened this issue 2 years ago • 8 comments

export default {
  configureWebpack: {
    plugins: plugins,
    resolve: {
      alias: {},
      extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"],
      symlinks: true,
      preserveSymlinks: true,
      dedupe: true,
    },
  },
  pluginOptions: {
    quasar: {
      treeShake: true,
    },
    vite: {
      resolve: {
        alias: {
          vue$: "vue/dist/vue.runtime.esm.js",
          "quasar-variables-styl": "quasar/src/css/variables.styl",
          "~quasar-variables-styl": "quasar/src/css/variables.styl",
          "quasar-styl": "quasar/dist/quasar.styl",
          "quasar-addon-styl": "quasar/src/css/flex-addon.styl",
          "~quasar-addon-styl": "quasar/src/css/flex-addon.styl",
          "@hightlight": "./public/hightlight",
        },
        dedupe: true,
        preserveSymlinks: true,
      },
      vitePluginVue2Options: {
        jsx: true,
      },
      disabledTypeChecker: true,
      disabledLint: true,
    },
  },
};

问题1: pluginOptions.vite.resolve.preserveSymlinks 和 configureWebpack.resolve.preserveSymlinks 设置后都无法起作用; 问题2: 文档指出可以自动处理vue-cli 配置的alias,但是一些ui插件库注入的alias 无法获取 image

nailfar avatar Mar 18 '22 09:03 nailfar

symlinks 没支持,你可以看下 vite 是否有等价的,PR Welcome。

alias 我是从 webpack 里读取的,第三方 ui 库怎么会往用户项目里注入 alias,不懂。只支持 vue-cli-plugin 注入的 alias

IndexXuan avatar Mar 18 '22 14:03 IndexXuan

symlinks 没支持,你可以看下 vite 是否有等价的,PR Welcome。

alias 我是从 webpack 里读取的,第三方 ui 库怎么会往用户项目里注入 alias,不懂。只支持 vue-cli-plugin 注入的 alias

我断点看了下,通过 vue-cli inspect 获取到的alias 和 通过vueConfig.chainWebpack 获取到的alias 不一样,有的第三方库写了个vue-cli-plugin 注入了alias. vue-cli-plugin-vite 和其他的vue-cli-plugin 执行的顺序是否会影响到vue-cli-plugin-vite获取alias 的最终值

nailfar avatar Mar 21 '22 01:03 nailfar

我觉得和顺序没关系,注入是一个阶段,resolve 后通过 chainWebpack 拿是下一个阶段,应该是可以拿到的。内置的 alias 也是注入的,和第三方 plugin 应该一样啊

IndexXuan avatar Mar 21 '22 01:03 IndexXuan

symlinks 没支持,你可以看下 vite 是否有等价的,PR Welcome。

alias 我是从 webpack 里读取的,第三方 ui 库怎么会往用户项目里注入 alias,不懂。只支持 vue-cli-plugin 注入的 alias

vite 有等价的配置可以设置 symlinks,但是vue-cli-plugin-vite 没有提供配置的入口,vue-cli-plugin-vite/config/index.ts 作为vite的启动配置文件,文件里只修改了plugins optimizeDeps,其他设置都没法修改。vue-cli-plugin-vite/config/options 也没有提供修改vite 相关的其他配置。我不知道这样做的最初想法是什么,有什么顾虑吗,我也不好贸然下手改代码。

nailfar avatar Mar 21 '22 01:03 nailfar

没有顾虑,就是一一对应精力有限,只弄了常用的。你可以看下怎么专为 vite 的,加配置项目或者直接读取然后设置给 vite

IndexXuan avatar Mar 21 '22 01:03 IndexXuan

plugin 问题要不你试下在你项目里,把 vite 插件弄到最后一个?

IndexXuan avatar Mar 21 '22 01:03 IndexXuan

plugin 问题要不你试下在你项目里,把 vite 插件弄到最后一个?

项目启动流程 node ./bin/vite 然后走的是vite 指令 然后读取的vue-cli-plugin-vite/config/index.ts的配置,vue-cli-plugin-其他插件 并不会触发执行,因为插件是vue-cli-service 指令 运行时才会执行,所以插件注入的alias 并不会生效,只有配置在vue.config.js里的alias 可以解析到,这个问题也可以先vue inspect 获取插件注入的alias ,手动添加到vue.config.js配置中。vue-cli 好像有api 提供获取运行时的配置,没有仔细研究过。

nailfar avatar Mar 21 '22 02:03 nailfar

https://github.com/IndexXuan/vite-plugin-vue-cli/blob/main/src/index.ts#L82

哦,太久了。想起来了,本插件并不会执行 vue-cli-plugin-*,只能处理用户在 vue.config.js 注入的自定义 alias。第三方 plugin 注入 alias 给用户,不太好吧。暂时没法支持。

IndexXuan avatar Mar 21 '22 02:03 IndexXuan