Я использую rollup
и rollup-plugin-node-resolve
для создания библиотеки React.
В моей библиотеке есть зависимость, например, от json-diff
& jsoneditor
, и я хочу связать его с библиотекой, чтобы потребители моей библиотеки не устанавливали их вручную.
Итак, я включил json-diff
в resolve
, используя опцию only
. Однако когда я это сделал, rollup
сообщает мне о других зависимостях, которые не обрабатываются - транзитивные зависимости json-diff
:
(!) Неразрешенные зависимости
https://rollupjs.org/guide/en#warning-treating-module-as-external-dependency
difflib (импортируется с помощью node_modules \ json-diff \ lib \ index.js,
commonjs-external: difflib) cli-color (импортируется
node_modules \ json-diff \ lib \ colorize.js, commonjs-external: cli-color)
Интересно, я что-то не так делаю? Это правильный подход к решению? Я хотел бы включить json-diff
и его зависимости. Должен ли я перечислить все переходные зависимости? Для json-diff
это не так громоздко, но у меня есть другие, такие как jsoneditor
, и там список очень длинный.
Вот мой rollup.config.js
:
import resolve from 'rollup-plugin-node-resolve';
import babel from 'rollup-plugin-babel';
import commonjs from 'rollup-plugin-commonjs';
import json from 'rollup-plugin-json';
import pkg from './package.json';
import postcss from 'rollup-plugin-postcss';
export default {
input: 'index.js',
external: ['react', 'prop-types', 'uwr-react-widgets', 'json-diff', 'jsoneditor'],
output: [{ file: pkg.module, format: 'esm' }],
plugins: [
resolve({
only: [
'ajv',
'ajv-errors',
'ajv-keywords',
'enumify',
'lodash-es',
'moment-timezone',
'bigdecimal',
'fast-json-stable-stringify',
'fast-deep-equal',
'uri-js',
'json-schema-traverse',
'moment',
],
}),
babel({
exclude: 'node_modules/**',
}),
commonjs({ extensions: ['.js', '.jsx'] }),
json(),
postcss({
autoModules: true,
namedExports: true,
modules: true,
extensions: ['.css', '.less'],
}),
],
};