У меня установлен глобальный модуль npm, назовем его abc-cli
. Теперь у меня есть реакция app
, которая запускается с этой командой: abc-cli run
.
Что в основном делает abc-cli
, так это получает компоненты в app
, компилирует и запускает его вместе с его источником.
Теперь я хочу опубликовать этот app
как отдельный модуль npm. Поэтому я использую Webpack для генерации пакета. При разрешении модулей веб-пакет не может разрешить модули, входящие в abc-cli
. Это очевидно, веб-пакет понятия не имеет, что такое abc-cli
.
Итак, мой вопрос: как мне убедиться, что веб-пакет разрешает зависимости модулей? Можно ли как-нибудь заставить веб-пакет запустить / скомпилировать abc-cli
во время связывания.
Или в худшем случае может быть, как подавить предупреждение о разрешении модуля или игнорировать эти модули. Потому что я знаю, что он будет присутствовать.
Пример:
В моем app
оператор импорта выглядит как
import SomeComponent from '@abc/components';
Теперь при объединении пакет не разрешит этот модуль:
Module not found: Error: Can't resolve '@abc/components' in '/home/shishir/app/src/shared/visualizations'
Было бы здорово помочь, если бы я мог обойти это.
Моя конфигурация веб-пакета:
module.exports = {
mode: 'development',
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'build'),
filename: 'index.js',
libraryTarget: 'commonjs2'
},
resolve: {
extensions: ['.mjs', '.js', '.jsx']
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
include: path.resolve(__dirname, 'src'),
exclude: /(node_modules|bower_components|build)/,
use: {
loader: 'babel-loader',
options: {
presets: [
'es2015',
'react',
'stage-2'
]
}
}
},
{
test: /\.css$/,
use: [
{ loader: "style-loader" },
{ loader: "css-loader" }
]
},
{
test: /\.(png|svg|jpg|gif)$/,
use: [
'file-loader'
]
}
]
},
externals: {
'react': 'commonjs react'
}
};
Я попробовал null-загрузчик :
{
test: require.resolve("@abc/components"),
use: 'null-loader'
}
но это не помогло.