The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.
このページを編集

Web 依存関係ロケーター

このドキュメントでは、https://www.webjars.org[WebJars] および mvnpm などの Web 依存関係 jar から静的リソースを提供する方法を説明します。

1. quarkus-web-dependency-locator エクステンションの使用

pom.xml
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-web-dependency-locator</artifactId>
</dependency>
build.gradle
implementation("io.quarkus:quarkus-web-dependency-locator")

1.1. WebJars

以下の JQuery のような WebJars を使用している場合は、

pom.xml
<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>jquery</artifactId>
    <version>3.1.1</version>
</dependency>
build.gradle
implementation("org.webjars:jquery:3.1.1")

HTML から jar 内のファイルを参照できます (例: /webjars/jquery/3.1.1/jquery.min.js)。

上記はデフォルトで利用可能ですが、quarkus-web-dependency-locator エクステンションを追加すると、パスにバージョンを含めなくてもファイルを参照できます (例: /webjars/jquery/jquery.min.js)。

1.2. Mvnpm

以下の Lit のような mvnpm を使用している場合は、

pom.xml
<dependency>
    <groupId>org.mvnpm</groupId>
    <artifactId>lit</artifactId>
    <version>3.1.2</version>
</dependency>
build.gradle
implementation("org.mvnpm:lit:3.1.2")

HTML から jar 内のファイルを参照できます (例: /_static/lit/3.1.2/index.js)。

上記はデフォルトで利用可能ですが、quarkus-web-dependency-locator エクステンションを追加すると、パスにバージョンを含めなくてもファイルを参照できます (例: /_static/lit/index.js)。

1.2.1. ImportMaps

Mvnpm jars では、https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script/type/importmap[importmap] を使用することもできます。 これにより、モジュールのインポートのみを使用できるようになります (例: import { LitElement, html, css} from 'lit';)。

importmap は quarkus-web-dependency-locator エクステンションで生成され、。/_importmap/generated_importmap.js で利用できます。 つまり、index.html に以下を追加すると、Web ライブラリーを名前でインポートできるようになります。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My app</title>

    <script src="/_importmap/generated_importmap.js"></script> (1)

    <script type="module">
        import '@lit'; (2)
        import 'app/demo-app.js'; (3)
    </script>
  </head>

</html>
1 生成された importmap を使用する
2 Web ライブラリーをインポートする
3 独自のファイルをインポートするには、quarkus.web-dependency-locator.import-mappings.app/ = /app/ を設定に追加します。任意のキーと値のペアを追加できます。
1.2.1.1. 自動インポート

上記のインポートを自動化することもできます。これを行うには、Web アセットを src/main/resources/META-INF/resources から src/main/resources/web に移動します。 そして、上記のスクリプトとインポートを`{#bundle /}` に置き換えます。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My app</title>

    {#bundle /} (1)

  </head>

</html>
1 これはビルド時に importmap スクリプトに置き換えられ、/app ディレクトリーで検出された CSS と JavaScript も含まれます。

これにより、HTML を変更することなくライブラリー、js、css を追加できます。ホットリロードもサポートされています。

1.3. Dev UI

quarkus-web-dependency-locator エクステンションを追加する場合、Dev UI で提供されているファイルや生成されたインポートマップを見ることができます。

Card in Dev UI Files Importmap

関連コンテンツ