2016-08-09 4 views
6

npmバンドルスクリプトに2番目の部分を追加しようとしています。最初の部分は素晴らしいですが、私はバンドルと共に3つのファイルをコピーしようとしています。npmスクリプト、バンドル時にpackage.jsonをdistにコピーする

だから今私が持っている:

"bundle": "NODE_ENV=production webpack --output-file bundledFile.js && cp package.json dist/", 

NODE_ENV=production webpack --output-file bundledFile.js自体が素晴らしい作品。作業していない部分は&& cp package.json dist/ですが、私のpackage.jsonを(実際には2つのファイルと一緒に)、distフォルダにコピーするようにしたいと思います。これらのスクリプトの真新しい、どのようなアイデアを修正する?アドバイスありがとう!ありがとう!

+1

コマンドラインから 'cp'を使うことには注意が必要です。通常、これはWindowsユーザーとは互換性がありません(ただし、気にならないかもしれません)。それ以外は、これは私に見えます。 package.jsonスクリプトを '&&'で連結できるはずです。特定のエラーが発生していますか? 2つのアイテムを2つの別々のタスクにして、代わりにチェーン化するとどうなりますか? ( 'npmはビルドを実行する:bundle && npmはビルドを実行する:package-json'など)。 – dvlsg

+0

@dvlsgお返事ありがとうございます、あなたはcp以外の何かをお勧めしますか?また複数の単一ファイルに対して同じ構文を使用することもできます(たとえば、readmeとnpmrcを追加したい) – ajmajmajma

+1

複数のファイルをコピーしていて、webpackが必要なものをサポートしていない場合はビルドユーティリティファイルを追加することを検討してください。 'gulp'やそれ以外のもの(' gulp 'は大好きですが)に行く必要はありません。単に 'copy-files.js'というノードファイルを作成し、' fs'を使うだけです。ファイルをコピーするパッケージ。それは、(主に)クロスプラットフォームなので、ファイルをコピーするためにノードを使用しているからです。そして、あなたのnpmスクリプトの 'node copy-files.js'でそれを呼び出すことができます。あなたはまだ 'node'が利用可能であると仮定しなければならないでしょう、しかしそれはあまり伸びていません。 – dvlsg

答えて

7

構文は機能するはずです(あなたのコメントを見ているようです)。私も、複数のポイントにまたがってNPMのスクリプトを分割することをお勧め:

{ 
    "bundle": "NODE_ENV=production webpack --output-file bundledFile.js", 
    "copy": "cp package.json dist/ && cp README.md dist/ && cp .npmrc dist/", 
    "build": "npm run bundle && npm run copy" 
} 

クロスプラットフォームの互換性を保つために、(cpは、Windows上で一般的に利用できません)、私はまた、このような./tools/copy-distrubution-files.jsとしてビルドファイルのどこかを追加することを示唆していますfscopy the necessary filesを使用して、node ./tools/copy-distribution-files.jsというnpmスクリプトで呼び出します。それは(主に)プラットフォームに依存しないでしょう(まだnodeがnodejsの実行可能ファイルとして利用可能であると仮定する必要がありますが、それはかなり妥当と思われます)。

+0

'cp'はWindowsでは動作しません。 – mardok

関連する問題