monorepo项目中自定义alias路径别名以及解决vite项目中别名被插件覆盖的问题

755 阅读1分钟

在monorepo项目中常常涉及工程之间相互引用的问题, 这个时候在使用vite等打包工具时别名会出现冲突

通用别名设置

export default defineConfig({
    plugins: [uni(), partialConfigPlugin()],
    resolve: {
        alias: {
            '@': fileURLToPath(new URL('./src', import.meta.url)),
        },
    },

使用uni插件时别名被插件覆盖, 主要是由于插件执行靠后,插件定义的别名entry优先级高导致

image.png

使用自定义部分设置插件可以解决

const partialConfigPlugin = () => ({
    name: 'return-partial',
    config: () => ({
        resolve: {
            alias: {
                '@': customResolver,
            },
        },
    }),
});

配置插件

export default defineConfig({
    plugins: [uni(), partialConfigPlugin()],//注意自定义插件要在需要被覆盖的插件的后面执行来获得更高的匹配优先级
    ...