update.はじめにみなさん、npmでパッケージ公開してますか?自分はこれまでいくつか公開したんですが、ここ最近「モダンに使ってもらうために何をパッケージングして配布すべきか」を見つめ直したので、自分なりの結論を語らせていただきたいと思います。CommonJSのモジュールNode.js環境でモジュールとして使用されるために、CommonJS形式で実装したモジュールは現状必須かなと思います。CommonJSモジュールをpackage.jsonのmainフィールドに設定すると、require("パッケージ名")で利用可能になります。Modulesとして実装したコードも配布した方が良いと思います。Modulesとして優先的に読み込むようになっていて、その場合はTreeShakingによるコード量の削減が期待できます。"パッケージ名";TypeScriptの型定義ファイルこちらのアンケートによるとTypeScriptは約半数のエンジニアが使ったことがあり、AltJSでは現状一番人気と言えるのかなと思います。そんなTypeScriptでは型定義ファイルが提供されていないモジュールは使いづらく、型定義の無いモジュールがTypeScriptのプロジェクトに採用されることは滅多にないんじゃないでしょうか。有名どころのパッケージは@typesでサポートされていたりしますが、いざ使ってみると最新版の定義が反映されていなかったりして辛い時があります。いう訳で、イマドキのnpmなら型定義も一緒に配布してあげた方が親切だしメンテもしやすいんじゃないかなと思います。TypeScriptの型定義ファイルは、package.jsonのtypesフィールドに設定しておけばOKです。詳しくは公式ドキュメントでhttps://www.typescriptlang.org/docs/handbook/declaration-files/publishing.htmlブラウザ用にバンドルしたコードバンドルしてブラウザで使われる想定のモジュールの場合、あらかじめバンドルしたコードも一緒に配布することをオススメします。xxxせずともunpkg.com経由でダウンロードできるので、CodePenなどのサービスでサクッと試してもらうことができます。png.esでは以下のURLで、npmに配布中のバンドル済みコードを取得できます。https://unpkg.com/png.es@0.4.0/dist/browser/png.min.jsなのでHTMLのscriptタグで読み込んで使用できます。CodePen.バンドルしたECMAScriptのモジュールモダンなブラウザは概ねESModulesに対応済みです。上のブラウザ用バンドルコードと同様の理由で、ECMAScriptモジュールもバンドルして提供すると簡単に試してもらうことができます。png.esでは以下のURLでバンドル済みECMAScriptモジュールを配布しています。https://unpkg.com/png.es@0.4.0/dist/esm/png.min.jsCodePenのJavaScriptはtype="module"設定されているため、すぐにESModulesを使用できます。CodePen.さいごに触ったことないけどモダンと噂のVue.jsを覗いてみました。devとかprodとか分けて色々配布されてますね。package.jsonの配布物っぽいフィールドはこんな感じです。"dist/vue.js",typingsとtypesは同じ役割なので、CommonJS、ESModules、TypeScriptの型定義を配布するのは一緒ですね。して発明を産み続け、人々の期待を超えるサービスを提供することを目的とした会社です。upLoginユーザーは見つかりませんでした。