Rollup 不会捆绑 proptypes 依赖

Rollup Won't Bundle Proptypes Dependency

我正在尝试构建一个 React 组件库。我想将我的道具类型作为文档保存在库中,而不是在构建时删除它们。问题是 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') 调用?

事实证明这是由于两个问题:

汇总插件的排序。 Resolve应该在第一位,其次是commonjs,然后是babel。

Babel 应该排除 node_modules。让 Babel 解析它们可能会使 commonjs 无法解析它们以捆绑依赖项。

最终配置应该是:

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/**"] })
  ]
};
  • 在您的 package.json 中,将 'prop-types' 包含在 'peerDependencies'
  • npm 安装

这解决了我的问题: [!] 错误:'default' 未由 node_modules\prop-types\index.js 导出,由 Component

导入