Gulp 吞咽需要别名

Gulp 吞咽需要别名,gulp,Gulp,我正在寻找一种安全的方法来使用gulp来做require别名。 这个想法与我们的想法相似 例如,我在源代码中添加了类似于require('@plugin/utils')的内容,并将其转换为我选择的内容,如require('$/plugins/longer/namespace/utils')。您可能已经注意到它与任何实际的文件路径都不匹配,这是故意的(如果有人感兴趣,它们是tiddlywiki文件)。 我发现最好的是,但最坏的情况是字符串替换,最好是正则表达式。 理想情况下,我希望使用更可靠、支持

我正在寻找一种安全的方法来使用gulp来做require别名。 这个想法与我们的想法相似

例如,我在源代码中添加了类似于
require('@plugin/utils')
的内容,并将其转换为我选择的内容,如
require('$/plugins/longer/namespace/utils')
。您可能已经注意到它与任何实际的文件路径都不匹配,这是故意的(如果有人感兴趣,它们是tiddlywiki文件)。 我发现最好的是,但最坏的情况是字符串替换,最好是正则表达式。 理想情况下,我希望使用更可靠、支持AST的字符串,因此我确信我永远不会替换错误的字符串(例如,模板字符串)。 我也在使用巴别塔,所以如果有一个巴别塔插件我可以使用,我也会为此感到高兴。 作为最后手段,我可能会尝试使用esprima编写一些babel插件或gulp插件,但esprima不符合现代JS标准(不解析对象扩展),我更喜欢创建另一个工具


提前感谢

最后,我找到了一个巴贝尔模块(),可以与gulp集成,还可以与eslint集成一些额外的配置魔法

所以,这就是我添加到我的吞咽管道中的内容(简化)

将所有引用转换为具有正确路径的
require('@plugin/xxxx')
。 通过一些额外的配置,您甚至可以让eslint警告您错误的路径分辨率。 您需要对其进行不同的配置,因为eslint需要实际路径,而输出文件需要一个特殊的名称空间。在安装两者之后,您应该向eslint配置中添加以下内容以使其正常工作:

plugins:
    - import

env:
    node: true
    browser: true

settings:
    import/resolver:
        babel-module:
            root: ./src/**
            alias:
                "@plugin": ./src/the/real/path

rules:
    import/no-unresolved: [2, { commonjs: true }]
plugins:
    - import

env:
    node: true
    browser: true

settings:
    import/resolver:
        babel-module:
            root: ./src/**
            alias:
                "@plugin": ./src/the/real/path

rules:
    import/no-unresolved: [2, { commonjs: true }]