当前位置: 首页 > 知识库问答 >
问题:

使用汇总和汇总捆绑策略的包依赖项

闽哲
2023-03-14

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

>

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

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

    如果“外部”配置中未排除“src”中使用的所有依赖项,则汇总将对其进行捆绑。默认情况下,它不在乎依赖关系是否在“deps”或“peerDeps”或“devDeps”中提及。

    但这似乎不是预期的方式。对于“deps”中的任何依赖项,使用此软件包的项目将安装此依赖项,然后webpack可以处理和处理。rollup不需要将其放入bundle文件中。如果是这样,意味着我们需要让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插件peer deps external:

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

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

    谢谢

  • 共有1个答案

    谢志用
    2023-03-14

    我认为不仅“对等依赖项”,而且“依赖项”应该是“外部”的,以便汇总到bundle。您可以使用具有以下配置的汇总插件peer deps external:

    peerDepsExternal({
      includeDependencies: true
    }),
    

    或者只使用以下条件:

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

    它将标记'外部'的所有deps下 /node_modules/

     类似资料:
    • 我正在使用Rollup绑定一个JS库。这个库依赖于@tensorflow/tfjs-core。 在tfjs的代码中,有一个获取URL的函数。如果它在浏览器环境中,它会使用全局函数;如果不是,它会尝试导入。 以下几行: 我的库是在浏览器中运行的,所以它总是使用全局函数。然而,Rollup仍然绑定了my lib的资产中的。 这不应该是一个问题,但一些消费者在使用webpack的React项目中使用库时

    • 问题内容: 我需要编写一个查询,该查询从表中返回汇总和非汇总数据。 下面的示例应有助于阐明我要执行的操作。我有以下(简化)表: 为了便于讨论,假设每个学生都属于一个课程组。我想编写一个查询,该查询将返回如下结果集: student.name,student.weight,weight_apgaw,weight_apgh 在哪里: weight_apgaw: 是单个学生的体重,表示为他/她所属课程组

    • 本文向大家介绍coffeescript使用的方式汇总,包括了coffeescript使用的方式汇总的使用技巧和注意事项,需要的朋友参考一下 Coffeescript作为Javascript低调的小弟实在是有过人之处,使用它可以增进开发效率,减少代码错误, 关键是能大幅提升开发愉悦感。我越来越觉得只要可能就在自己的项目中把coffee用起来。 然而也许你和我一样,在了解完coffeescript的语

    • 我正在尝试使用rollup导入fire baseui库。如果我将firbaseui包含在他们提供的cdn中,用户界面加载良好: 但是,如果我尝试使用导入它,我会在浏览器中遇到以下错误:

    • 本文向大家介绍javascript的BOM汇总,包括了javascript的BOM汇总的使用技巧和注意事项,需要的朋友参考一下 setTimeout()  //延时器,只执行一次代码 clearTimeout()  //清除演示器 setIntervla()  //定时器,根据指定时间间隔执行一次代码 clearInterval()  //清除定时器 window.history.length  

    • 问题内容: 我想从数字列表中获得一个总计。 出于演示目的,我先使用 产量 如您所见,我初始化一个空列表,然后在每个循环迭代中。有没有更优雅的方法,例如列表理解? 问题答案: 列表推导没有很好的方法(干净,可移植)来引用其正在构建的列表。一种好的,优雅的方法可能是在生成器中完成该工作: 要获得此列表,当然可以使用。