Отключить предупреждение о кеше для загрузчика Pixi - PullRequest
0 голосов
/ 05 декабря 2018

При загрузке нескольких атласов спрайтов с помощью загрузчика PixiJS, я получаю это предупреждение:

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

Поскольку есть некоторые активы, которые находятся в двух атласах, откуда я получаю,но можно ли поймать, игнорировать или отключить это предупреждение с помощью кода (а не просто игнорировать все предупреждения в консоли)?

Решение

Благодаря ответу @ Shawn Iзакончил тем, что установил 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 немного избыточно, но не повредит:)

1 Ответ

0 голосов
/ 19 декабря 2018

Предупреждения регистрируются только в двух местах -

Текстура - 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

Если вы посмотрите на несколько строк выше либо вызовВы можете увидеть то, что похоже на директиву предварительной обработки для условной компиляции, которая должна включать этот код, только если вы находитесь в режиме отладки.Например:

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

Смотрите пример препроцессора здесь: https://www.npmjs.com/package/preprocess

Странно, я не вижу эту библиотеку в их package.json, так что я не уверен, что этоЛогика препроцессора даже живая.Основываясь на сценариях из package.json и отсутствии других препроцессоров в коде, я сомневаюсь, что используется логика препроцессора.

Поэтому, если вы не хотите устранять конфликт ресурсов, вызывающий предупреждение, вы можете либо (i) включить условную компиляцию, тем самым запустив эти операторы препроцессора if, затем запустить код в режиме, отличном от режима отладки, или(ii) просто войдите в код, который вы используете, и закомментируйте два оператора console.warn (т.е. те две строки, которые я связал в начале).

Опция (ii) кажется немного проще.:)

Редактировать / обновить:

Дополнить опцию (i) информацией в вашем ответе, Арно:

Вот некоторые загрузчики веб-пакетов, которые(если верить их документам) добавьте условную предварительную обработку:

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

В соответствии с документами vue-cli вы можете добавить новые загрузчики, как описано вэта ссылка:

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()
  }
}

Похоже, что он генерирует конфигурацию веб-пакета через императивный API, предоставляемый этой библиотекой .

Так что, если вам действительно нужно получить эти предупреждения, я бы предложил (1) добавить одну из этих интеграций препроцессорного веб-пакета, а затем (2) посмотреть, сможете ли вы добавить новый веб-пакетзагрузчик с помощью методов, описанных в документации.Надеюсь, это поможет.

...