【问题标题】:Rollup Won't Bundle Proptypes DependencyRollup 不会捆绑 Proptypes 依赖项
【发布时间】:2019-06-18 02:26:16
【问题描述】:

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

【问题讨论】:

    标签: rollupjs


    【解决方案1】:

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

    汇总插件的顺序。 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 中,您是否在peerDependenciesdependencies 中包含prop-types。如果它是开源的,你能分享到你的库的 GitHub 链接吗?谢谢!
    • 这有点晚了,但现在比我遇到这个问题时要复杂一些,但你可以在这里看到我的汇总配置:github.com/hcikit/hcikit/blob/master/packages/tasks/… 和我的 package.json:github.com/hcikit/hcikit/blob/master/packages/tasks/… 回购总体上有点混乱,因为它是一个单一的仓库,但如果还不算太晚,我希望这会有所帮助。
    【解决方案2】:
    • 在您的 package.json 中,在“peerDependencies”中包含“prop-types”
    • npm 安装

    这解决了我的问题: [!] 错误:'default' 不是由 node_modules\prop-types\index.js 导出的,而是由组件导入的

    【讨论】:

      猜你喜欢
      • 2021-12-24
      • 1970-01-01
      • 2015-12-03
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      • 2015-03-12
      • 1970-01-01
      • 2012-11-01
      相关资源
      最近更新 更多