DNET_NpmPackagePublish - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

npmパッケージの開発と公開

概要

NuGet同様npmにもパッケージを登録してみる。

詳細

npmアカウントを作成する。

サインアップ

https://npmjs.org/signup

以下をメモ。

  • username
  • password
  • email address

npm adduser

  • ターミナルからnpm adduserを実行

    > npm adduser
    Username: XXXXX
    Password: YYYYY
    Email: (this IS public) ZZZZZ@ZZZZZ
    
  • ~/.npmrcにtoken情報が書き込まれ、

  • npmモジュールを公開する準備が整う。

モジュールを実装する

package.json

モジュールの名前や、依存関係などを記載する(nspec的なファイル)。

# プロパティ 説明
1 private 公開可否をtrue・falseで設定
2 name 重複禁止のモジュール名で英数小文字とハイフンだけ使用可能
https://www.npmjs.com/package/:name)
3 version n.n.n
4 main このモジュールの主となるスクリプトファイル。
requireできるモジュールを作る場合は必須。
5 dependencies 依存npmモジュール

*.jsファイル

*.d.tsファイル

  • TypeScriptの型定義ファイル(TypeScriptの該当節を参照)

ライブラリとして公開し更新を行う。

npm publishで公開と更新を行う。

公開

  • 個人スコープ or スコープなし

    npm publish
    
  • 組織スコープ
    では既定値が、privateになるので。

    • private

      npm publish
      
    • public

      npm publish --access public
      

更新

npm publish

※ 公開と同じ。
 ただしversion番号は上げておく。

公開したライブラリを利用

require構文で利用

https://github.com/OpenTouryoProject/SampleProgram/tree/master/PkgMgr/npm/ossc/console-app1

module構文(import)で利用

...

webpackで利用

https://github.com/OpenTouryoProject/SampleProgram/tree/master/PkgMgr/npm/ossc/browser-app1

参考

Qiita

left-pad

話題となった事もアリ(npmの該当節を参照)、既にdeprecatedだが、
ミニマムな実装事例として参考にできる。

test-library1

ossc-test-library1

OSSコンソーシアム 開発基盤部で登録したテスト用ライブラリ

touryo-test-library1

前述のライブラリを組織スコープの名前空間に対応させたもの。

※ npmでは、名前空間対応させたライブラリをscoped packagesと言うらしい。

移行メモ

  • 元 Wiki では見出しそのものが他ページへのリンクになっていた箇所 (「npmアカウントを作成する。」「*.jsファイル」の実装方法、 「require構文で利用」「module構文(import)で利用」「webpackで利用」)は、 GitHub Wiki では見出しからアンカが生成されるため、 見出しをプレーン・テキストとし、リンクは直下の本文に置いた。
  • マイクロソフト系技術情報 Wiki(techinfoofmicrosofttech.osscons.jp)への URL リンクは、移行済みの NuGetパッケージの開発と公開 / TypeScript に張り替えた。
  • PukiWiki のページ内アンカ(#xxxxxxxx)は GitHub Wiki では再現できないため、 他ページのアンカを指すリンクは「〜(ページ名 の該当節を参照)」の形に置き換えた。
  • 元 Wiki の行頭空白によるプレフォーマット・ブロックは、 フェンス付きコードブロックにした。

Tags: 移行, npm, パッケージ公開, npm publish, package.json, scoped packages, left-pad, TypeScript

⚠️ **GitHub.com Fallback** ⚠️