[jquery]构建:将导出添加到 package.json,导出 slim 和 esm 构建

2023-12-06 865 views
2

变更摘要:

  • 添加--esm选项grunt custom,生成 jQuery 作为 ECMAScript 模块
  • 定义exports字段在package.json
  • 扩展node_smoke_tests以测试 slim 和 ESM 构建及其各种组合
  • 将有关 ESM 使用的详细信息添加到发行包 README 中

我使用以下位置发布了包含这些更改的 jQuery 测试版本jquery-releasehttps://www.npmjs.com/package/@mgol/jquery-exports-test-do-not-use-v7 我还通过这些更改推送了jquery-dist存储库4.0.0到我的叉子: https ://github.com/mgol/jquery-dist/tree/exports-test

我还使用此包添加了一个测试存储库以确保其正常工作: https: //github.com/mgol/jquery-exports-test

回答

2

jQuery 本身是有状态的,因此双包危险将成为一个真正的问题吗?

是的,人们注册 jQuery 插件,将其自身作为属性附加到jQuery对象上。我认为这将被视为一种状态,因为如果有人jQuery.myPlugin =在一个模块系统中这样做,那么除非我们使用 CommonJS 包装器方法,否则添加的属性不会存在于另一个系统中。

4

"module"那么大概就推荐这个条件了。

2

我还为浏览器 ESM 构建添加了命名导出,我之前错过了它。

我想了一下 PR 的当前状态,我想我想将工厂分离到新的入口点。否则,出口jQuery$何时获得工厂都会造成混乱。

然而,这个 PR 已经又长又复杂,我想在这里避免此类更改并将它们放在单独的 PR 中。因此,如果当前状态没有严重问题,请批准。如果您有重要的功能请求,请提交新问题,以便我可以在合并后解决它们。

4

顺便说一句,我正在删除此 PR 中未缩小资产大小的比较。这是因为我们将从一个文件 ( jquery.min.js) 计算它到四个 - full/slim 和 CommonJS/ESM 构建。如果包含未缩小的文件,每个分支就有 8 个数字。

未缩小的尺寸并不真正相关,甚至评论也会添加到它们中,并且压缩这些尺寸会更加奇怪,所以我希望这一更改不会引起争议。

9

哦,我确实发现了一个小问题。所有换行符Gruntfile.cjs都是 CRLF 而不是 LF。

6

哦,我确实发现了一个小问题。所有换行符Gruntfile.cjs都是 CRLF 而不是 LF。

我想你只会在 Windows 上看到这个,这取决于你如何配置 Git。

此外,它是由于.gitattributes仅明确提及而引起的.js。我刚刚提交了#5290 来解决这个问题,请查看。

7

我玩过这个并且我喜欢它。让我们把它合并起来。在我最近的迁移中,我认为如果顶级 package.json 可以包含type: module.

我对此(有点)犹豫;我们添加的所有内容都需要维护,可能需要维护很长一段时间,而且这种配置已经相当复杂了。

现在似乎所有流行的捆绑程序都支持exports,尽管 Parcel 仅在版本 3 中将此设置为默认设置,但 v2 需要选择此设置。