Home
back

JSR Package 登録 調査

id: 201, 2025-05-25

### 音声概要

・AIで生成された 音声概要になります。


### 概要

  • JSR メモになります。
  • JSR 初任者ですが。deno Package 管理的なイメージでした。
  • npm に似ています。

### 構成

  • JSR
  • npm
  • node 20

### 関連


### JSR install

  • global 追加の場合
npm i -g jsr

  • 補足: Package追加の例、 npm 版
npx jsr add @luca/cases

### jsr 登録

  • フォルダ登録
mkdir add-func 
cd add-func
  • jsr.json, main.ts 追加

  • tree

$ tree .
.
├── jsr.json
└── main.ts

  • jsr.json
  • @scope/name の組み合わせ。
  • name は、適宜に変更下さい、
{
  "name": "@kotan-kndev/add-func",
  "version": "0.9.1",
  "license": "MIT",
  "exports": "./main.ts"
}

  • main.ts

export function add(a: number, b: number): number {
  return a + b;
}

  • jsr.ioに、アカウント登録が必要(Github アカウントでOK)
  • 登録 (publish)
  • 初回登録時に、scopeの登録の確認あった気がします。
npx jsr publish


  • 試しに 、別フォルダ等でinstall(jsr add)
npx jsr add @kotan-kndev/add-func

  • Log
>npx jsr add @kotan-kndev/add-func
Setting up .npmrc...ok
Installing @kotan-kndev/add-func...
$ npm install @kotan-kndev/add-func@npm:@jsr/kotan-kndev__add-func

added 1 package in 912ms

Completed in 1s

React 画面、JSR Package からインポートする例

  • JSRは、deno (npm , bun) 環境対応のようです。
  • ブラウザは、未対象らしいです。
  • jsファイルを、Package 登録すると。画面追加できそうでした。
  • 対象 フロントJSの種類は、 viteがサポートしている種類に 限定されます (今のところ)

### 構成

  • JSR
  • Nitro Server
  • React
  • npm
  • node 20

### React package開始

画面単位で、JSR 登録


### 参考。 react


  • src/client/page1.tsx
import ReactDOM from "react-dom/client"
import React from "react"

const Page: React.FC = () => {
  return (
  <div className="text-3xl"><h1>Page1</h1> 
    <hr />
    <span><a href="/">[ home ]</a>
    </span>
  </div>
  );
};
ReactDOM.createRoot(document.getElementById("app")).render(
  <div>
    <Page />
  </div>
);

  • react-build
  • react_mpa/vite.config.ts

https://github.com/kuc-arc-f/nitro_5ex/blob/main/react_mpa/vite.config.ts

entry: ./src/client/page1.tsx に、変更します

    build: {
      lib: {
        entry: ["./src/client/page1.tsx"],
        formats: ["es"],
        fileName: "[name]",
      },

npx vite build
  • public/static/page1.js が出力されます。

### JSR package add

  • jsr フォルダ作成(適当な名前)
mkdir re25_0331page1
cd re25_0331page1

  • tree
tree .
.
├── jsr.json
└── src
    └── main.js

  • jsr.json
  • name, versionは、適宜に変更下さい。
{
  "name": "@kotan-kndev/re25-0331page1",
  "version": "0.9.5",
  "license": "MIT",
  "exports": "./src/main.js"
}

  • React jsファイルコピー

public/static/page1.js を、jsr フォルダ の、src/main.js に、コピーします。


  • JSR 登録
npx jsr publish

### JSR install

  • 例で今回は、page1 を追加した react環境にインストールします、

  • 参考のパス
  • /page1 : JSR package作成
  • /page2 : JSR install する、React 画面

  • package install
npx jsr add @kotan-kndev/re25-0331page1

  • package.json dependencies は、@kotan-kndev/re25-0331page1 追加されます。
  "dependencies": {
    "@kotan-kndev/re25-0331page1": "npm:@jsr/kotan-kndev__re25-0331page1@^0.9.5",

  • src/client/page2.tsx
console.log("#page2.tsx");
import "@kotan-kndev/re25-0331page1";

  • react_mpa/vite.config.ts
  • entry: ./src/client/page2.tsx に、変更します
    build: {
      lib: {
        entry: ["./src/client/page2.tsx"],
        formats: ["es"],
        fileName: "[name]",
      },

  • SSR追加: /page2
  • routes/page2.ts
export default eventHandler(async (event) => {
  return `<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>page2</title>
</head>
<body>
    <div id="app"></div>
    <script type="module" src="/static/page2.js"></script>
</body>
</html>
  `;
});

  • page2コンパイル後、server起動
npx vite build && npm run dev
  • localhost:3000/page2 が、React画面表示

page2(react) 追加した参考


Svelte 画面、JSR Package からインポートする例

  • React 環境に、Svelte画面(JSR)を追加する例です
  • 異なる フロントJS種類を、追加する。

### 構成

  • JSR
  • Nitro Server
  • Svelte
  • npm
  • node 20

### svelte package開始

画面単位で、JSR 登録


### 参考。 svelte


  • src/client/page3.svelte
<script lang="ts">
</script>

<main>
  <div>
    <h1 class="text-3xl font-bold">page3</h1>
    <hr />
    <span><a href="/">[ home ]</a>
    </span>
  </div>
</main>

<style>
</style>
  

  • src/client/page3.ts
import { mount } from "svelte";
import App from "./page3.svelte"

mount(App, { target: document.getElementById("app") });

  • svelte-build
  • vite.config.ts

entry: ./src/client/page3.ts に、変更します

    build: {
      lib: {
        entry: ["./src/client/page3.ts"],
        formats: ["es"],
        fileName: "[name]",
      },

npx vite build
  • public/static/page3.js が出力されます。

### JSR package add

  • jsr フォルダ作成(適当な名前)
mkdir sv25-0331page3
cd sv25-0331page3

  • tree
tree .
.
├── jsr.json
└── src
    └── main.js

  • jsr.json
  • name, version は、適宜に変更下さい。
{
  "name": "@kotan-kndev/sv25-0331page3",
  "version": "0.9.1",
  "license": "MIT",
  "exports": "./src/main.js"
}

  • svelte jsファイルコピー

public/static/page3.js を、jsr フォルダ の、src/main.js に、コピーします。


  • JSR
npx jsr publish

### JSR install

  • 前回記事の、React環境のフォルダに移動します。
  • 例で今回は、page3 を追加したJSRを。react環境にインストールします、

  • 参考のパス
  • /page3 : JSR install する、svelte 画面

  • package install
npx jsr add @kotan-kndev/sv25-0331page3

  • src/client/page3.tsx
console.log("#page3.tsx");
import "@kotan-kndev/sv25-0331page3";

  • react_mpa/vite.config.ts
  • entry: ./src/client/page3.tsx に、変更します
    build: {
      lib: {
        entry: ["./src/client/page3.tsx"],
        formats: ["es"],
        fileName: "[name]",
      },

  • SSR追加: /page3
  • routes/page3.ts
export default eventHandler(async (event) => {
  return `<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>page3</title>
</head>
<body>
    <div id="app"></div>
    <script type="module" src="/static/page3.js"></script>
</body>
</html>
  `;
});

  • page3コンパイル、server起動
npx vite build && npm run dev
  • localhost:3000/page3 、svelte画面表示(React 環境)

page3(svelte JSR) 追加した参考


Vue 画面、JSR Package からインポートする例

### 構成

  • JSR
  • Nitro Server
  • Vue
  • npm
  • node 20

### React package開始

画面単位で、JSR 登録


### 参考。 Vue


  • page4 : package するVue
  • pkg/ap2-vue/src/client/page4.vue

### 取り込む、react環境


  • PKG install
npx jsr add @kotan-kndev/vu-page4-250403

  • react_jsr2/src/client/page4.tsx

https://github.com/kuc-arc-f/nitro_7ex/blob/main/react_jsr2/src/client/page4.tsx


  • SSR追加: /page4
  • react_jsr2/routes/page4.ts

https://github.com/kuc-arc-f/nitro_7ex/blob/main/react_jsr2/routes/page4.ts


  • start
npx vite build && npm run dev

localhost:3000/page4 , Vue 画面