微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Webpack 4:动态别名,没有弃用警告

如何解决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 举报,一经查实,本站将立刻删除。