Я поднял этот вопрос, когда впервые увидел его, я думаю, что это определенно должно быть сделано в производственной сборке.
К сожалению, 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 , вы можете подписаться на проблему, чтобы увидеть, как она решается.