※Firebase CLI については更新されたので npm update すればもう大丈夫です
※npm 側で対応して該当バージョンが削除されました。よって我々側の作業不要です。
どうした
firebase-tools とかの出力がおかしい。
どうして
依存の依存の(中略)依存である colors に変なリリースがあった。作者故意のものなのでそこの更新は期待できなさそう。
-
v1.4.2,v1.4.1← 問題あり -
v1.4.0← 大丈夫
どうする
※既に npm 側で対応されたので、現在は作業不要です。
直接利用している場合
過去のバージョンで固定すれば大丈夫。
$ npm install colors@1.4.0
依存の依存の場合
基本的には対象パッケージの更新待ちです。動く状態の package-lock.json が残っている場合、そのままにしておきましょう。
更新が来たら npm update で新しいバージョンがインストールされます。
ちなみに対象パッケージ自体のバージョンを下げてもたぶん改善しません。
更新が必要だったり新規プロジェクトとかでロックファイルがない場合は、直接書き換えれば差し当たりは動きます。package-lock.json から "colors" で検索してね。(このやり方で大丈夫なのか不安。)
"dependencies": {
"colors": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.2.tgz",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
"integrity": "sha512-5QhJWPFZqkKIieXJPpCprdOytvH7v0AGWpu9K2jZ4LWkGg3dVBNoYPgGGRpEsc0jb8Boy0ElYrdjH9uXfhRSqw=="
}
}
(1.4.x 以外は大丈夫なので 1.0.3 とかは放っておいてください。)
ロックファイル更新したら npm ci で再インストールです。
他に overrides という仕組みが便利だそう。詳しくは azu さんの記事を。
どうしてこうなった
faker と同じ作者さんです。2020 年に火事に遭い、寄付も集まらず「これ以上無償では働けない」とのことです。
今回のニュース。
npm はかつて faker はバージョンを戻すなどしたらしい。 やってくれました。もう該当バージョンはレポジトリーから消えています。colors も待ってれば npm 側がうまいことやってくれるかも?
その他
出力が乱れるのはそれはそれでバグ?
作者さんがむちゃくちゃにしてやる!!という気持ちで更新したのは間違いないと思うんだけど本来は AA が表示される予定だったっぽい?
color じゃないよ
colors です。
colors vs colors.js
npm のパッケージ名は colors、GitHub のレポジトリー名は colors.js です。
npm ls でリスト表示して確認
依存ツリーとバージョンを表示できるので、不安なひとはこれで確認してみてください。
$ npm ls colors
my-project@0.0.0 /path/to/project
└─┬ firebase-tools@10.0.1
├─┬ cli-table@0.3.11
│ └── colors@1.0.3
└─┬ winston-transport@4.4.1
└─┬ logform@2.3.0
└── colors@1.4.0
試す
該当バージョンの npm 側が問題のあるバージョンを削除しました。colors を読み込むだけで発症?します。
当時:
$ npm install colors@1.4.2
$ node
Welcome to Node.js v16.13.1.
Type ".help" for more information.
> require('colors')
(ギャー)
Ctrl+C で止めて Ctrl+D で Node.js の REPL 終了です。
今:
$ npm install colors@1.4.2
npm ERR! code ETARGET
npm ERR! notarget No matching version found for colors@1.4.2.
npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.
Firebase CLI は直接ダウンロードできる
動かすだけならこれでも。
(日本語で読みたければ右上から言語選択してください。)
もっと詳しく
azu さんの記事が出たのでそちらをどうぞ。
おしまい
やんやは終わりました。ひとまずおつかれさまでした。
しかし色々つらいね……。