首页 > 解决方案 > 流无法识别 Webpack 别名

问题描述

我在使用 webpack 别名时遇到了一些问题,并且让它与 flow 配合得很好。

我有别名:

    alias: {
        vue$: 'vue/dist/vue.esm.js',
        puma: path.resolve(__dirname, 'assets/app/stores/clothes'),
    },

我通过这样导入在我的组件中使用它:

     import components from "puma/components"

对于我的 flowconfig,我将其设置为:

 module.name_mapper='^puma\/.*' -> 'puma/\1'

而且我真的不确定这种 OCaml 类型的正则表达式是如何工作的……我需要一些帮助。

这篇文章的最终目标是能够解决错误:

     ^^^^^^^^^^^^^^^^ puma. Required module not found

标签: webpackeslintflow

解决方案


弄清楚了!

我只是不太了解 中发生了什么name_mapper,我仍然不完全了解它,但我的猜测是:

flow 解析您的文件,然后当它进入导入时,我认为它会对其进行一些检查,name_mappers以查看导入语法是别名还是需要映射到其他东西。在这种情况下,当它到达时puma,代码库中没有命名目录puma,但恰好有一个name_mapper适合.flowconfig其正则表达式的目录,所以它沿着映射路径向下移动到assets/app/puma/clothes.

我应用的正则表达式不正确,我最终使用了类似的东西:module.name_mapper='^puma' -> 'assets/app/stores/clothes'让它工作。

我确实有一个问题……这对性能有多大影响?flow 现在是否检查每个导入name_mapper以查看是否有映射?添加新的会name_mapper大大降低流的解析速度吗?

如果有人知道,我会非常好奇地听到它。


推荐阅读