如何解决Webpack 4:动态别名,没有弃用警告
我有一个复杂的vue-cli(webpack 4)项目,该项目需要一些动态别名解析器才能使事情变得容易:当我--cap-add sys_ptrace
时,它会根据不同的子文件夹请求者从不同的文件夹中导入import something from '#/somefile'
放置。因此,例如,something
可以动态指向#/assets/somefile
之类的疯狂事物。
这是我前一段时间编写的代码(为简化起见,它将每个../../../assets/<parent dir name>/somefile
变成#/something
):
../something
代码完全符合我的需求。但是每次我构建项目时,控制台都会显示弃用警告,这种警告现在还不错,但是将来可能会很糟糕(例如,当webpack 5超出beta时):
// vue.config.js
class DynamicAliases {
constructor (opts = {}) {
this.prefix = opts.prefix || '#'
}
apply (compiler) {
compiler.plugin('module',(req,next) => {
// req.request is '#/something'
// req.path is requester's dir path (is omitted in this example)
const isRelativeRequest = req.request.startsWith(this.prefix)
if (isRelativeRequest) {
// Process and return new request
req.request = req.request.replace(this.prefix,'..')
compiler.doResolve('resolve',req,null,next)
} else {
// Skip processing
next()
}
})
}
}
module.exports = {
chainWebpack (config) {
config.resolve
.plugin('dynamicAliases')
.use(DynamicAliases,[{ prefix: '#' }])
}
}
它说要使用钩子,但我不太了解如何使用它们。 docs中既没有DeprecationWarning: Resolver: The callback argument was splitted into resolveContext and callback.
DeprecationWarning: Resolver#doResolve: The type arguments (string) is Now a hook argument (Hook).
(或类似于module
)的钩子,也没有webpack的源代码中的“示例”(或者我在源代码浏览中不够好)。 / p>
这是我得到的,但是我不知道如何应用更改:
module
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。