1. ホーム
  2. npm

[解決済み] 特定のフォルダをパッケージのルートとしてnpmで公開する方法

2022-07-26 08:35:30

質問

私は、ソースとリリースをビルドしてパッケージングするためのgulpタスクを含むプロジェクトを持っており、そのディレクトリは dist . 私の目標は、それをnpmパッケージとして公開することですが、私のdistフォルダだけです。その npmドキュメント によると、私は files タグを使用してエクスポートするファイルを指定することができます。これは動作します。しかし、ドキュメントにはこうも書かれています。

配列にフォルダを指定した場合、そのフォルダ内のファイル も含まれます。

結果、node_modulesは以下のようなnpmパッケージとなります。

しかし、私はパッケージのルートにあるすべてのファイルを見たいと思います (そのような dist フォルダなしで)パッケージのルートにあるすべてのファイルを見たいのです。私の index.js ファイルは dist フォルダの中にありますが、ルートにあるはずです。私は、タグ files/dist/**/* としていますが、うまくいきませんでした。

どうすれば実現できるのでしょうか?

どのように解決するのですか?

もしあなたが、(私が推奨する) セマンティック リリース を使っているのであれば pkgRoot オプションを .releaserc.json オプションで指定します。(また rjp ):

{
  "pkgRoot": "dist",
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    "@semantic-release/npm",
    [
      "@semantic-release/exec",
      {
        "prepareCmd": "npx rjp package.json version nextRelease.version"
      }
    ],
    [
      "@semantic-release/git",
      {
        "message": "Release <%= nextRelease.version %> [skip ci]",
        "assets": ["package.json", "CHANGELOG.md"]
      }
    ],
    "@semantic-release/changelog"
  ],
}

これで問題は解決です。ただ、あなたの dist フォルダーに package.json というファイルを作成します。それを簡単に行うには cp を追加することで簡単にできます。 postbuild スクリプトに追加します。

{
  "scripts": {
    "postbuild": "cp package.json dist"
  }
}