89937


npm関係  
pugをglobal install後、ローカルにcliをインストールしたら、変な警告が出た。

> npm WARN deprecated core-js@2.6.12: core-js@<3.23.3 is no longer  
>  maintained and not recommended for usage due to the number of issues.  
>  Because of the V8 engine whims, feature detection in old core-js  
>  versions could cause a slowdown up to 100x even if nothing is  
>  polyfilled. Some versions have web compatibility issues. Please,  
>  upgrade your dependencies to the actual version of core-js.

なんとなく和訳

> core-jsアプデしろ

core-jsなんて今まで使ったことがなかった（babelは使ったことなない）  
global、localのどこにもインストールされていない。  
奇妙で少々怖い

これはなぜ私のPCにいるのか  
これは一体何なのか


CC BY-SA 4.0
2022-07-12T09:51:11.227
89932
2022-07-13T01:08:07.707
2022-07-13T01:08:07.707
3054
53242
question
javascript npm babeljs
インストールした覚えが無い core-js に関する警告が出る


> global、localのどこにもインストールされていない。  
>  奇妙で少々怖い

npmの依存関係は複雑怪奇になりがちです。なので、知らないパッケージに依存していることはいたって一般的です。(このせいでサプライチェーン攻撃に脆弱な面もありますが)

npm
v7以降であれば、依存関係の理由をボトムアップで取得できる[explain](https://docs.npmjs.com/cli/v7/commands/npm-
explain)サブコマンドが使用できます。エイリアスは`why`なのでこちらのほうが覚えやすいかも。

[code]

    $  npm explain core-js
    core-js@2.6.12
    node_modules/core-js
      core-js@"^2.4.0" from babel-runtime@6.26.0
      node_modules/babel-runtime
        babel-runtime@"^6.26.0" from babel-types@6.26.0
        node_modules/babel-types
          babel-types@"^6.26.0" from constantinople@3.1.2
          node_modules/constantinople
            constantinople@"^3.0.1" from pug-attrs@2.0.4
            node_modules/pug-attrs
              pug-attrs@"^2.0.4" from pug-code-gen@2.0.3
              node_modules/pug-code-gen
                pug-code-gen@"^2.0.2" from pug@2.0.4
                node_modules/pug
                  pug@"^2.0.4" from the root project
            constantinople@"^3.1.2" from pug-code-gen@2.0.3
            node_modules/pug-code-gen
              pug-code-gen@"^2.0.2" from pug@2.0.4
              node_modules/pug
                pug@"^2.0.4" from the root project
            constantinople@"^3.0.1" from pug-filters@3.1.1
            node_modules/pug-filters
              pug-filters@"^3.1.1" from pug@2.0.4
              node_modules/pug
                pug@"^2.0.4" from the root project
    
[/code]

また、それまでのバージョンでも`ls`サブコマンドで依存ツリーは確認できます。

[code]

    $ npm ls core-js
    app@1.0.0 /app
    `-- pug@2.0.4
      `-- pug-code-gen@2.0.3
        `-- constantinople@3.1.2
          `-- babel-types@6.26.0
            `-- babel-runtime@6.26.0
              `-- core-js@2.6.12
    
[/code]

さて、どうやらpugが間接的に(古い)babel-runtimeを使用しているため発生しているようです。でも、今のpugはbabel-
runtimeに依存していません。なんで？

> pugをglobal install後、 **ローカルにcliをインストールしたら** 、変な警告が出た。

CLIをインストールした、おそらく[`pug-cli`](https://github.com/pugjs/pug-
cli)のようです。よくみてください。このリポジトリ、5年間メンテされていません。

pug自体も半年以上コミットがなく気になるところですが、どうやら`pug-
cli`は現在最新の`pug@3.0.2`ではなく、`pug@2.x`を使用したまま放置されているようです。

[update pug version · Issue #86 · pugjs/pug-cli](https://github.com/pugjs/pug-
cli/issues/86)

このIssueによると、有志によるフォークが利用可能なようです。

<https://www.npmjs.com/package/@anduh/pug-cli>


CC BY-SA 4.0
2022-07-12T17:08:31.433
89937
2022-07-12T17:18:04.953
2022-07-12T17:18:04.953
2376
2376
89932
answer