阿八博客
  • 100000+

    文章

  • 23

    评论

  • 20

    友链

  • 最近新加了很多技术文章,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

Parcel 2.0.0 alpha 发布,Web 应用打包工具

欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/ws/2019/0815/106034.html
ad-wrap">

挑战A.I.,赢百万奖金......了>>>

Parcel 是一款极速、零配置的 Web 应用打包工具。此版本比 Parcel 1 更可扩展、更可伸缩和更可靠,同时还保留了从 Parcel 中获得的易用性和开发人员体验。具体内容如下:

  • 扩展性:Parcel 2 是完全可扩展的,从一端到另一端。插件类型已经被扩展,允许使用易于配置的管道扩展和覆盖几乎所有的核心行为。
  • 可伸缩性:虽然 Parcel 一直使用并行性和缓存来扩展到大型应用程序,但是在 Parcel 2 中,这一步更深入。此版现在缓存和并行化了更多的  Parcel 工作,尤其是缓存的构建,可以扩展到更大的应用程序。
  • 可靠性:Parcel 2 提高了缓存的可靠性,同时将性能提高到最大。此版中使用了一个全新的跨平台文件系统监视器,它可以在 Parcel 未运行时检测粒度文件更改,缓存的构建具有几乎完全相同的性能与监视模式。

配置 

Parcel 是零配置。这并不意味着不可配置,只是 Parcel 尽可能多地从代码本身推断,并将现有的配置文件用于其他工具(例如 .babelrc)。

Parcel 2 是可选择的配置。Parcel 2 CLI 中内置的默认配置对于大多数应用程序来说都足够了,并且包含了所有支持的 Parcel 1 以及更多的配置,但是 Parcel 2 支持通过为每个 Parcel 的核心阶段专门设计的一整套插件类型来扩展核心的附加功能。

  • Resolvers:Resolvers 将导入(如 import‘./foo’ 或 import‘rep’)转换为 /my/project/foo.js 之类的完整文件路径。Parcel 2 中的默认解析器包括对节点解析算法的支持,但是,如果要扩展或重写项目的解析算法,此版本可以使用解析器插件。
  • Transformers:Transformers 将代码和 asset 从一种语言编译到另一种语言,或者只是以某种方式转换文件。例如,类型记录转换器将类型转换为JavaScript,而 Babel 转换器将 JavaScript 转换为不同的 JavaScript。Transformers 还负责从代码中提取依赖项,例如导入语句和要求调用,这些调用被传递回解析器、另一个转换器等等。
  • Bundlers:Bundler 插件以 asset 图作为输入,并输出类似于 asset 图的 bundle 图,但将 asset 被分组。默认的 Bundler 将具有类似文件类型(如 JavaScript 和 CSS)的 asset 组合在一起,并执行代码分裂和一些其他的优化。
  • Namers:Namer 插件负责确定每个包的输出文件名。默认的名称插件包括为 asset 的长期可达性而进行的内容散列,以及与 Parcel 1 相同的命名规则。
  • Runtimes:Runtime 插件允许在构建时将代码插入到包中
  • Packagers:packagers 将公共类型的 asset 组合到一个可以在浏览器中加载的输出包中。例如,JSPackager 将 JavaScript 文件组合在一起,以便在正确的时间以正确的顺序执行它们。
  • Optimizers:Optimizer 插件以某种方式优化包,例如最小化或压缩文件。例如,Terser 优化器将 JavaScript 包最小化
  • Validators:Validator 插件在后台运行以执行代码验证,例如 linting (例如 eslint)或类型检查(例如类型记录)。
  • Reporters:Reporter 插件在整个 bundling 过程中接收带有状态信息和日志事件的事件。

所有这些都是在一个非常简单的 .parcelrc 的 JSON 文件中配置的。 

Small Core

此版 Parcel 中的所有东西都被分解成插件,所以 Parcel 核心非常小。现在,它基本上只是根据你的应用程序中的文件图表,以一种有目的和优化的方式运行其他所需的工具。所有的东西都是设计成并行的,并且是可缓存的,无论是本地的还是最终的,都是跨机器的。

Worker farm 已经进行了更新,以便在可用时使用内置到 Node 12 中的新 Worker_threads,与以前版本中使用的多进程后端相比,该模块的开销更低。

除了一个全新的核心和插件系统,Packcel 2 还有许多新特性,包括对多个目标的支持。Parcel 2 允许你为多个目标配置构建,这些目标将并行构建。例如,你可能希望为具有现代语法的现代浏览器构建应用程序的版本,为具有更多转换溢出功能的遗留浏览器构建一个版本的应用程序。或者希望为节点和浏览器构建一个库。此版本中可以通过在 Package.json 中配置目标来做到这一点。

{
  "browser": "dist/legacy/index.js",
  "browserModern": "dist/modern/index.js",
  "targets": {
    "browserModern": {
      "engines": {
        "browsers": [
          "last 1 Chrome version"
        ]
      }
    },
    "browser": {
      "engines": {
        "browsers": [
          "> 0.25%"
        ]
      }
    }
  }
}

Parcel 2 还支持高级的包优化,它自动将诸如 React 和其他库的公共依赖项拆分到它们自己的包中,这些包可以并行加载,并与代码的其余部分分开缓存。

其他更新内容请见发布说明

相关文章