Свернуть разрешить плагин и транзитивные зависимости - PullRequest
0 голосов
/ 09 января 2019

Я использую 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'],
    }),
  ],
};
...