Rollup не будет связывать зависимости Proptypes

Я пытаюсь создать библиотеку компонентов реактивных компонентов. Я хотел бы сохранить свои пропсы в библиотеке в качестве документации, а не удалять их во время сборки. Проблема в том, что rollup не объединяет все функции prop-types.

Я получаю эти строки в моем пакете:

var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');

var checkPropTypes = require('./checkPropTypes');

И потребители моей библиотеки не могут разрешить эти пакеты, поэтому это приводит к ошибке.

Конфигурация моего накопительного пакета выглядит так:

import babel from "rollup-plugin-babel";
import commonjs from "rollup-plugin-commonjs";
import resolve from "rollup-plugin-node-resolve";
import pkg from "./package.json";

export default {
  input: "src/index.js",
  output: [
    {
      file: pkg.main,
      format: "cjs",
      sourcemap: true
    },
    {
      file: pkg.module,
      format: "es",
      sourcemap: true
    }
  ],
  external: Object.keys(pkg.peerDependencies || {}),
  plugins: [
    babel(),
    resolve(),
    commonjs({ include: ["./index.js", "node_modules/**"] })
  ]
};

Как я могу принудительно объединить и расширить вызов require('./lib/ReactPropTypesSecret') во время сборки?


person Blaine    schedule 18.06.2019    source источник


Ответы (1)


Оказывается, это было связано с двумя проблемами:

Заказ плагинов Rollup. Первым должен быть Resolve, затем commonjs, а затем babel.

Babel должен исключить node_modules. Если Babel проанализирует их, это может привести к тому, что commonjs и resolve не смогут проанализировать их для связывания зависимостей.

Окончательный конфиг должен быть:

import babel from "rollup-plugin-babel";
import commonjs from "rollup-plugin-commonjs";
import resolve from "rollup-plugin-node-resolve";
import pkg from "./package.json";

export default {
  input: "src/index.js",
  output: [
    {
      file: pkg.main,
      format: "cjs",
      sourcemap: true
    },
    {
      file: pkg.module,
      format: "es",
      sourcemap: true
    }
  ],
  external: Object.keys(pkg.peerDependencies || {}),
  plugins: [
    resolve(),
    babel({
      exclude: "**/node_modules/**"
    }),
    commonjs({ include: ["./index.js", "node_modules/**"] })
  ]
};
person Blaine    schedule 18.06.2019
comment
В package.json своей библиотеки вы включили prop-types в peerDependencies или в dependencies. Не могли бы вы поделиться ссылкой GitHub на вашу библиотеку, если она с открытым исходным кодом? Спасибо! - person tonix; 21.04.2020
comment
Немного запоздал с этим, но сейчас это немного сложнее, чем когда у меня была эта проблема, но вы можете увидеть мою конфигурацию свертки здесь: github.com/hcikit/hcikit/blob/master/packages/tasks/ и мой package.json: github.com/hcikit/hcikit/blob/master/packages/tasks/ Репозиторий в целом немного запутан, потому что это монорепозиторий, но я надеюсь, что это поможет, если еще не поздно. - person Blaine; 20.06.2020