【问题标题】:package dependencies with rollup and rollup bundle strategy使用汇总和汇总捆绑策略的包依赖项
【发布时间】:2021-10-25 05:36:09
【问题描述】:

我正在开发一个 NPM 包,它使用汇总来捆绑并发布到 npm。我想了解是否应该通过汇总捆绑依赖项,最佳实践是什么。 这是我的分步分析:

  1. “src”中使用的每个依赖项都应添加到“deps”或“peerDeps”中

  2. 如果你选择只放在'peerDeps'而不是'deps',考虑到本地构建目的,最好添加到'devDeps'。否则,您可能必须使用 3rd 方工具在“peerDeps”中安装依赖项,或者升级到 npm@7(我还没有使用 npm@7) 我想这部分有争议,但这个话题并不是关于“peerDeps”所以让我们继续吧。

  3. 如果在“外部”配置中未排除,则汇总将捆绑“src”中使用的所有依赖项。默认情况下,它不关心“deps”、“peerDeps”或“devDeps”中是否提到了依赖项。

但这似乎不是预期的方式。对于“deps”中的任何依赖项,使用此包的项目将安装此依赖项,然后 webpack 可以处理和处理。 rollup 不需要将其放入捆绑文件中。 如果是这样,是否意味着我们需要让汇总来处理来自第三方的任何依赖项都是外部的?也许使用这种策略:

// https://github.com/remix-run/react-router/blob/v5.2.0/packages/react-router/rollup.config.js
function isBareModuleId(id) {
  return (
    !id.startsWith(".") && !id.includes(path.join(process.cwd(), "modules"))
  );
}

或使用rollup-plugin-peer-deps-external:

peerDepsExternal({
  includeDependencies: true,  // FIXME: 'deprecated', no idea why?
}),

我想在这里指出最佳实践,如果任何想法不正确,希望有人能纠正我。欢迎任何建议。

谢谢。

【问题讨论】:

    标签: npm module dependencies rollup


    【解决方案1】:

    我认为不仅“peerDependencies”而且“依赖项”也应该是“外部”,以便汇总到捆绑包。 您可以使用rollup-plugin-peer-deps-external,配置:

    peerDepsExternal({
      includeDependencies: true
    }),
    

    或者只使用条件react-router 使用:

    function isBareModuleId(id) {
      return (
        !id.startsWith(".") && !id.includes(path.join(process.cwd(), "modules"))
      );
    }
    

    它会将 /node_modules/ 下的所有部门标记为“外部”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      • 2020-09-15
      • 2020-08-21
      • 2019-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多