禁用 Pixi 加载程序的缓存警告

Disable cache warning for Pixi loader

在使用 PixiJS 加载程序加载多个精灵图集时,我收到此警告:

Texture added to the cache with an id [SomeID] that already had an entry

因为有一些资产在两个地图集中,所以我知道这是从哪里来的,但是是否可以通过代码捕获、忽略或禁用此警告(不仅仅是忽略控制台中的所有警告)?

解决方案

感谢@Shawn 的回答,我最终安装了 preprocess-loader 并将此代码添加到我的 vue.config.js:

module.exports = {
    chainWebpack: config => {
        config.module
            .rule('preprocess-loader')
            .test(/\.[js|ts]/)
            .include.add(/pixi\.js/).end()
            .use('preprocess-loader')
                .loader('preprocess-loader')
                .options({DEBUG:false})
                .end()
    }
}

同时拥有 .test() 部分和 .include 部分有点多余,但也没有坏处:)

警告仅记录在两个地方 --

纹理 - https://github.com/pixijs/pixi.js/blob/f913327e55897d50e37c5c3addee468aeb8a0cb8/src/core/textures/Texture.js#L498

基础纹理 - https://github.com/pixijs/pixi.js/blob/f6f00047d6c523df2aa366cf3745eb831cec6ec5/src/core/textures/BaseTexture.js#L807

如果您查看任一调用上方的几行,您会看到条件编译的预处理指令,如果您处于 DEBUG 模式,它应该只包含该代码。 例如:

// @if DEBUG
      <test for error and warn>
// @endif

在此处查看预处理器示例:https://www.npmjs.com/package/preprocess

奇怪的是,我在他们的 package.json 中没有看到该库,所以我不确定该预处理器逻辑是否存在。根据 package.json 中的脚本以及代码中缺少其他预处理器,我怀疑是否使用了预处理器逻辑。

因此,如果您不想解决导致警告的资源冲突问题,您可以 (i) 启用条件编译,从而触发那些预处理器 if 语句,然后 运行调试模式或 (ii) 进入您正在使用的代码并注释掉两个 console.warn 语句(即我在开头 link 编辑的那两行)。

选项(ii)似乎更容易一些。 :)

Edit/Update:

用您的回复中的信息充实选项 (i),Arno:

这里有一些 webpack 加载器(如果相信他们的文档)添加了条件预处理:

https://www.npmjs.com/package/webpack-preprocessor-loader https://www.npmjs.com/package/preprocess-loader

根据 vue-cli 文档,您可以按照 link:

中的描述添加新的加载器

https://cli.vuejs.org/guide/webpack.html#adding-a-new-loader

示例:

// vue.config.js
module.exports = {
  chainWebpack: config => {
    // GraphQL Loader
    config.module
      .rule('graphql')
      .test(/\.graphql$/)
      .use('graphql-tag/loader')
        .loader('graphql-tag/loader')
        .end()
  }
}

它似乎是通过 this library 提供的命令式 api 生成 webpack 配置。

因此,如果您真的需要消除这些警告,我建议 (1) 添加其中一个预处理器 webpack 集成,然后 (2) 查看是否可以通过这些方法添加新的 webpack 加载器在文档中描述。希望对您有所帮助。