Ответ 1
Эта проблема не связана, в частности, с машинописным шрифтом, но является общей проблемой того, как связать два пакета javascript вместе и предотвратить загрузку библиотек несколько раз. Решающий фактор зависит от того, какую сборку/компоновщик вы используете. Я думаю, что этот ответ на стекопоток довольно хорош, если вы заботитесь только о реакции дедупликации.
Вот пример решения этой проблемы с помощью веб-пакета.
Прежде всего, убедитесь, что любые общие зависимости в вашем дочернем пакете являются devDependencies и peerDependencies, а ваш родительский пакет устанавливает их как необходимые зависимости и devDependencies.
A - package.json
{
"dependencies": {
"B": "1.0.0",
"react": "x.x.x",
},
"devDependencies": {
"@types/react": "x.x.x"
}
}
B - package.json
{
"version": "1.0.0",
"peerDependencies": {
"@types/react": "x.x.x",
"react": "x.x.x"
},
"devDependencies": {
"@types/react": "x.x.x",
"react": "x.x.x"
}
}
Если вы работаете с веб-пакетом из пакета A, вам нужно обязательно разрешить node_modules, если это применимо только из пакета A node_modules.
const path = require('path')
module.exports = {
// rest of your webpack condig...
resolve: {
modules: [path.resolve(__dirname, 'node_modules'), 'node_modules']
}
}
Вот еще одно решение, использующее response-app-rewired, которое делает то же самое
const path = require('path')
module.exports = function override(config) {
config.resolve = Object.assign({}, config.resolve, {
modules: [path.resolve(__dirname, 'node_modules'), ...config.resolve.modules]
})
return config
}