メインコンテンツへスキップ

Cheerio 1.0 リリース、必要な機能がすべて含まれています 🔋

·3分で読めます
Felix Boehm
Cheerioのメンテナー

Cheerio 1.0 がリリースされました! 12回のリリース候補と、最初の1.0リリース候補からわずか7年を経て、ついにCheerio 1.0の完成を宣言する時が来ました。今回のリリースのテーマは「必要な機能がすべて含まれている」ことで、一般的なユースケースがすぐにサポートされるようになりました。

単3電池を用意して、新機能、変更点、およびアップグレード方法について以下をお読みください!

新しいウェブサイトとドキュメント

前回のリリース以降、Cheerioの新しいウェブサイトとドキュメントを公開しました。新しいサイトでは、Cheerioを最大限に活用するための詳細なガイドとAPIドキュメントを提供しています。 cheerio.js.orgでご確認ください。

ドキュメントをロードする新しい方法

Cheerioへのドキュメントのロード方法が刷新されました。Cheerioは、さまざまなユースケースに合わせて調整された複数のロード方法をサポートするようになりました。

  • load: HTMLまたはXML文字列を解析する従来のメソッド。
  • loadBuffer: バイナリデータで動作し、ドキュメントのエンコーディングを自動的に検出します。
  • stringStreamdecodeStream: ストリームから直接HTMLを解析します。
  • fromURL: URLからHTMLを取得して一度に解析します。

これらのメソッドの詳細については、ドキュメントのロードチュートリアルをご覧ください。

簡略化されたデータ抽出

新しいextractメソッドを使用すると、HTMLドキュメントからデータを抽出し、オブジェクトに格納できます。 GitHubからCheerioの最新リリースを取得し、リリース日とリリースノートをリリースページから抽出するのは、現在では次のように簡単です。

import * as cheerio from 'cheerio';

const $ = await cheerio.fromURL(
'https://github.com/cheeriojs/cheerio/releases',
);
const data = $.extract({
releases: [
{
// First, we select individual release sections.
selector: 'section',
// Then, we extract the release date, name, and notes from each section.
value: {
// Selectors are executed within the context of the selected element.
name: 'h2',
date: {
selector: 'relative-time',
// The actual release date is stored in the `datetime` attribute.
value: 'datetime',
},
notes: {
selector: '.markdown-body',
// We are looking for the HTML content of the element.
value: 'innerHTML',
},
},
},
],
});

利用可能なすべてのオプションの詳細については、データ抽出ガイドをお読みください。

破壊的な変更とアップグレードガイド

Cheerio 1.0には、いくつかの破壊的な変更が導入されており、特に注目すべき点は次のとおりです。

  • 最小NodeJSバージョンが18.17以上になりました。

  • インポートパスが簡略化されました。たとえば、cheerio/lib/slimの代わりにcheerio/slimを使用します。

  • 非推奨のデフォルトのCheerioインスタンスと静的メソッドが削除されました。

    以前は、次のようなコードを書くことができました。

    import cheerio, { html } from 'cheerio';

    html(cheerio('<test></test>')); // ~ '<test></test>' -- NO LONGER WORKS

    必ず最初にドキュメントをロードしてください。

    import * as cheerio from 'cheerio';

    cheerio.load('<test></test>').html();
  • htmlparser2のオプションは、xmlキーの下にのみ存在するようになりました。

    const $ = cheerio.load('<html>', {
    xml: {
    withStartIndices: true,
    },
    });
  • 以前にCheerioによって再エクスポートされたノードタイプは、domhandlerから直接インポートする必要があります。

変更の包括的なリストについては、変更履歴を参照してください。

Cheerio 1.0へのアップグレード

Cheerio 1.0にアップグレードするには、次を実行するだけです。

npm install cheerio@latest

参加しませんか?

新機能を試して、ご意見をお聞かせください! 問題が発生しましたか? GitHub issue trackerで報告してください。 改善のためのアイデアがありますか? プルリクエストをお待ちしています:)

ありがとうございました

Cheerio 1.0を始動してくれた@jugglinmike、そしてこのリリースの形成に貢献してくれたすべての貢献者に感謝します。 皆様のご協力なしには実現できませんでした。

Cheerioの開発をサポートしてくださるスポンサーとバッカーに感謝します。 職場でCheerioを使用している場合は、会社にサポートを検討してもらうことをご検討ください!

そして最後に、Cheerioをご利用いただきありがとうございます 🙇🙇‍♀️