Вам не нужно использовать псевдонимы. У меня похожая настройка, просто переключитесь на рабочие пространства yarn (v1), что делает довольно хитрый трюк, он добавляет ссылку sym на все ваши пакеты в root node_modules .
This Таким образом, каждый пакет может импортировать другие пакеты без каких-либо проблем.
Чтобы применить рабочие области пряжи с помощью lerna:
// lerna.json
{
"npmClient": "yarn",
"useWorkspaces": true,
"packages": [
"packages/**"
],
}
// package.json
{
...
"private": true,
"workspaces": [
"packages/*",
]
...
}
Это позволит включить рабочую область пряжи с помощью lerna.
Единственное, что остается решить - создать потребительский пакет для переноса требуемого пакета (поскольку стандартные конфигурации babel и webpack игнорируют трансплантацию node_module).
В проекте Next. js это просто, используйте next-transpile-modules .
// next.config.js
const withTM = require('next-transpile-modules')(['somemodule', 'and-another']); // pass the modules you would like to see transpiled
module.exports = withTM();
В других пакетах, использующих веб-пакет, вам нужно будет указать веб-пакету для транспортировки ваших использованных пакетов (предположим, что они находятся под npm scope of @somescope/
).
Так, например, для переноса машинописного текста вы можете добавить дополнительный загрузчик модулей.
// webpack.config.js
{
...
module: {
rules: [
{
test: /\.ts$/,
loader: 'ts-loader',
include: /[\\/]node_modules[\\/]@somescope[\\/]/, // <-- instruct to transpile ts files from this path
options: {
allowTsInNodeModules: true, // <- this a specific option of ts-loader
transpileOnly: isDevelopment,
compilerOptions: {
module: 'commonjs',
noEmit: false,
},
},
}
]
}
...
resolve: {
symlinks: false, // <-- important
}
}
Если у вас есть css, вы получите N Также необходимо добавить раздел для css.
Надеюсь, это поможет.
Преимущество: рабочие пространства пряжи уменьшат размер вашего node_modules, поскольку он будет устанавливать дубликаты пакетов (с той же версией semver) один раз!