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