1. ホーム
  2. npm

package.jsonスクリプトを使って特定の拡張子を持つファイルをコピーする方法

2023-10-02 09:56:08

質問

ビルドツールとしてnpmを試しています。

私が遭遇した 1 つの障害は、1 つのフォルダーから別のフォルダーに javascript ファイルをコピーする必要があることです。ソース フォルダには、typescript ファイル、javascript ファイル、および map ファイルが含まれていますが、ターゲット フォルダでは、javascript ファイルにのみ関心があります。

私は、各ファイルのコピーステートメントを作成したくないのですが、すべての .js ファイルをコピーしたいと思います。また、私のソース フォルダには、javascript ファイルを含むサブフォルダがあります。これらも同様にコピーされる必要があり、サブフォルダー構造を維持します。

私が試したのは NCP を使用することですが、フィルタを動作させることができません。フィルタで使用されている正規表現をテストしたところ、問題なく動作しているように見えます。テストは Regex テスター で、正規表現 .*\.js$ のようなテスト文字列と main.ts , main.js main.js.map などのように、.jsの文字列のみがマッチングされました。

私のパッケージのjsonには、以下のものが含まれています(省略)。

{
    "scripts": {
        "copy": "ncp scripts wwwroot/scripts --filter=\".*(\\\\.js$)\"" 
    }, 
    "devDependencies": { 
        "ncp": "2.0.0.0" 
    }
}

私の正規表現は文字列の中の文字列であるため、ダブルエスケープしました。また、例えば他のバリエーションも試してみました。

--filter=/.*\.js$/g       - compilation error
--filter=/.*\\.js$/g      - no files copied
--filter=\".*\\.js$\"     - no files copied
--filter=\"/.*\\.js$/g\"  - no files copied
(no filter)               - all files copied

私は決してNCPと結婚しているわけではありません。もし他のものがより良く機能するならば、私はそれを使うでしょう。

それで。package.json の scripts セクション内で、特定の拡張子を持つファイルのみを別のフォルダーにコピーするにはどうしたらよいでしょうか。私は間違いなく、何か明白なことを見落としています...。

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

警告! cpy-cli、copyfiles、および他の解決策は、ここのコメントまたは以下の回答に記載されています。

cpx は良い代物かもしれません。

CLIがあり、正規表現の代わりにグロブを使うことができ、ディレクトリツリーを保持することができ、これを書いている時点では比較的最新です......。