at backyard

Color my life with the chaos of trouble.

2020という文字を🐭🐭🐭🐭に変換するbabel pluginをnpm publishしようとしたら、npmにspam判定されてpublishできなかった

あけましておめでとうございます。2020年もよろしくお願いします!

さて、今年も書き初めと称してコードを書きました。
2020という文字を\\uD83D\\uDC2D\\uD83D\\uDC2D\\uD83D\\uDC2D\\uD83D\\uDC2D(🐭🐭🐭🐭)に変換するbabel pluginです。

github.com

作成したついでにnpmにpublishしたところ、下記のようなエラーが出ました。

403 Forbidden - PUT https://registry.npmjs.org/2020-to-mouse-babel-plugin - Package name triggered spam detection; if you believe this is in error, please contact support@npmjs.com

エラーメッセージで調べてみたところ、下記のstack overflowが検索に引っかかりました。

stackoverflow.com

ざっくり要約すると、私のpackage名がスパムだと判定されたようです。
詳細はリンク先のコメントを見ていただきたいのですが、ダッシュと数字を組み合わせた既存のパッケージ名は疑わしいと判断されることが多いようで、特に今回書いた自分のものなんて、2020 という文字やbabel-pluginという文字が含まれているのが、良くなかったのかななどと思っています。

まあ、ジョークみたいなものなので、しょうがない、という一言で済ませました。

というわけで、以下、作成したbabel-pluginの使い方だけざっくり説明。

# npmにpublishしていないのでgithubから直接インストールしてください
npm install --save https://github.com/shinshin86/2020-to-mouse-babel-plugin.git

.babelrcに下記のように設定してください。

{
  "plugins": [
    [ "module:2020-to-mouse-babel-plugin"]
  ]
}

実行するには@babel/core@babel/cliも必要です。

npm install --save @babel/core @babel/cli

例えば下記のようなコードが有る場合、

console.log('Hello 2020')

babel越しに実行すると、ネズミ絵文字のコードに変換されてしまいます。

node_modules/.bin/babel index.js
# => console.log("HELLO \uD83D\uDC2D\uD83D\uDC2D\uD83D\uDC2D\uD83D\uDC2D");