npmのpackageを作る?
いくつかのPJで共通した処理があり、それぞれで書き直すのもめんどくさいので、packageを作りたくなったのだが、そこでふと、packageってどうつくればいいのか?と思い調べてみた。
publicに運用したい場合
npmやgithub packageなどが選択肢になる。 ただし、一度公開すると消せないと思っておく必要があるので、積極的にpublicにしたいかというと。。。
privateに運用したい場合
実は、gitリポジトリを作るだけでよい。 実際には、タグでversionを振らないと使いづらいが。
以下のような感じでgitリポジトリはnpmでインストールできる。
npm install git+https://github.com/<user>/<repo>.git#<tag or commit>
前提としてgitリポジトリには、package.json
などは作られているとする。(npm init
などを実行するなどして)
バージョンを更新したいときも同様。 なお、package.jsonのバージョンを書き換えても自分はうまくいかなかった。
Typescriptでpackageを作る場合
TypescriptのパッケージをNextjsでimportして実行しようとすると、以下のようなエラーがでる。
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
JSにトランスパイルしたものをインポートしてもエラーは解決できるが、いろいろめんどくさい。 Typescriptのまま実行できるようにするには、トランスパイルの設定が必要なので、以下のパッケージをインストールする。
npm install --save next-transpile-modules
そして、next.config.js
を以下のように書き換える必要がある。
/** @type {import('next').NextConfig} */ const nextConfig = withTM({ reactStrictMode: true, swcMinify: true, transpilePackages: ['lib-xxx'] }) module.exports = nextConfig
lib-xxxをロードしたいパッケージ名に置き換えればいけるはず。 nextConfigの設定をwithTMに通すところが差分。
その他
gitサブモジュールを使うという方法もちょっと探ってみたものの、いまのところnodejsのプロジェクトはpackageで管理するのがよいのではという結論。