Переименовать строки чёрного сопоставления webpack / gatsby - PullRequest
8 голосов
/ 15 октября 2019

При создании нашего производственного приложения в Гэтсби я вижу что-то вроде этого:

window.___chunkMapping={
  "app":[],
  "component---src-templates-page-tsx":[],
  "component---src-templates-pages-newsletter-tsx":[]
}

Можно ли хэшировать эти пути вместо их распечатывания? Мы не хотим показывать слишком много из того, что происходит сзади.

Я попытался установить эти конфиги в веб-пакете:

output: {
  filename: `[chunkhash:2][contenthash:5].js`,
  chunkFilename: `[chunkhash:2][contenthash:5].js`,
},

И он успешно хэширует файлы .js, но непути к шаблонам.

1 Ответ

9 голосов
/ 18 октября 2019

Я поднял этот вопрос, когда впервые увидел его, я думаю, что это определенно должно быть сделано в производственной сборке.

К сожалению, componentChunkName (рассматриваемый путь к шаблону) генерируется Gatsby в createPage& не обрабатывается webpack.

Код, генерирующий componentChunkName, находится здесь: github

Я попытался изменить код следующим образом:

    const { kebabCase } = require(`lodash`)
    const path = require(`path`)
+   const uuidv5 = require(`uuid/v5`)
    const { store } = require(`../redux`)

    const generateComponentChunkName = componentPath => {
      const program = store.getState().program
      let directory = `/`
      if (program && program.directory) {
        directory = program.directory
      }
      const name = path.relative(directory, componentPath)

-     return `component---${kebabCase(name)}`
+     return process.env.NODE_ENV === `production`
+       ? `component---${uuidv5(name, uuidv5.URL)}`
+       : `component---${kebabCase(name)}`
    }

    exports.generateComponentChunkName = generateComponentChunkName

Это успешно скрывает все имена компонентов в производственной сборке:

app: Array [ "/app-e593b3d93932ed3a0363.js" ]
"component---11d478fe-6a55-579c-becf-625ab1e57cf4": Array [ "/component---11d478fe-6a55-579c-becf-625ab1e57cf4-76c90ae50035c52657a0.js" ]
"component---15c76861-b723-5e0a-823c-b6832aeeb0a0": Array [ "/component---15c76861-b723-5e0a-823c-b6832aeeb0a0-18eb457ba6c147e1b31b.js" ]
...

Ни один из локальных модульных тестов не прошел, мой тест "щелчок по кругу, пока что-то не сломался" также не дал никаких ошибок,Я мог бы представить PR позже сегодня, чтобы увидеть, есть ли у сопровождающих некоторое представление о том, почему это не очень хорошая идея.

Редактировать : Вместо этого я открыл проблему: github , вы можете подписаться на проблему, чтобы увидеть, как она решается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...