0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

js初心者がgitからnpm packageを社内に配布する準備をしてみた

Last updated at Posted at 2025-01-08

はじめに

社内向けにOutsystemsのE2E(codeceptjs)のライブラリを作成している。
他チームに展開するにあたり、簡単な導入法がないかを考えている。
社外へ公開せず、社内から簡単にアクセスできる方法がよい。
ZIPの共有、gitのsubmodule、ローカルファイルpackageのnpm installなどを検討したが、それぞれ難点があり採用に至らなかった。
npmについて調べていくと、gitリポジトリからnpm installできることが分かった。
jsやnodeは既存システムの改修をしたことがある程度の知識のため、調べたことを備忘録代わりに書き留めていこうと思う。

環境

node:v21.5.0
npm:10.2.4

前提

ライブラリは作成中で、package.jsonやリポジトリは作成されている状態である。
リポジトリは社内からのみアクセス可能になっている。
package名はmylibrary、バージョンは0.1.0とする。
リポジトリのURLはmyRepository、ターゲットのブランチはtargetBranchとする。

インストール

npm install

gitからのインストールには以下のコマンドを使う。

$ npm install git+{myRepository}#{targetBranch}

myRepositorygit cloneする際のURLを指定する。今回はhttpのプロトコルでインストールできることを確認した。
targetBranchはインストールするソースをどのブランチから取得するかを指定する。今回は確認していないがtagを指定することもできるようだ。

インストールされたものを確認する

npm listでインストール状況を確認した。

mylibrary@0.1.0 (git+{myRepository}#{commitId})

利用側のプロジェクト側で上記コマンドを実行して、ファイルがどのように配置されたかを確認する。
node_module配下にライブラリ側のpakage.jsonnameに指定した名称でフォルダが作成されている。
さらに、ライブラリ側で依存関係のあるパッケージがインストールされていることが確認できた。

適当な名前にしてしまうと、他のパッケージと被る可能性があるため注意しなければならない。

アンインストール

下記コマンドを実行した。アンインストールに関しては他と同じようにパッケージ名を指定する。

$ npm uninstall mylibrary

npm listでインストール状況を確認したところ、正しく削除されていることが確認できた。

利用のための設定

クラスをexportして利用側でrequireしたい。
ライブラリの内部のフォルダ・ファイル構造を意識させず、すべてのクラスを以下のように利用できるようにしたい。

  const { Hogehoge } = require("mylibrary");

index.jsでexports

/src/index.jsに各クラスのexportsを記載

module.exports = {
    Hogehoge: require("./hoge/Hogehoge"),
    Fugafuga: require("./fuga/Fugafuga"),
};

package.jsonのexportsを設定

ライブラリ側のpackage.jsonにexportsを追記。

    "exports": {
        ".": "./src/index.js"
    }

終わりに

突貫ではあるが、目標であった自作ライブラリの簡単な配布が実現できた。
このライブラリをチーム全体で育てていくための開発規約や運用サイクルについてはまたきちんと考えていきたい。
そのために、gitを用いたnpm installでのバージョン管理方法など技術的な課題も残っているので調査していきたい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?