2016-06-25 9 views
22

ビルドツールとしてnpmを試しています。package.jsonスクリプトを使用して特定のファイル拡張子を持つファイルをコピーする方法

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

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

フィルタでNCPを使用していますが、フィルタを動作させることができません。私はフィルタで使用される正規表現をテストし、正常に動作するように見えます。テストはRegex Testerの正規表現.*\.js$で行われ、テスト文字列はmain.ts,main.jsmain.js.mapなどとなり、.js文字列のみが一致しました。

マイパッケージJSONは(省略)次の内容が含まれます。

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

私の正規表現は、私はそれをダブル逃れた文字列内の文字列であるため。私も他のバリエーションを試しました。例えば:NCPと結婚しているわけではありません。他の何かがうまくいくなら、私はそれを使用します。

So:どうすればpackage.jsonのスクリプトセクション内で、特定の拡張子のファイルのみを別のフォルダにコピーできますか?私はかなりぼんやりと見えるものを見逃してしまったと確信しています...

答えて

38

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

それは、あなたの代わりに正規表現のグロブを使用することができますディレクトリツリーを保存することができ、そして私がこれを書いている比較的最新です....

+8

パーフェクトと呼ばれるNPMモジュールもあります。今私のスクリプトは "cpx"スクリプト/ **/*。js \ "wwwroot/scripts"であり、devDependency "cpx": "1.3.1"となっています。 これはまさに私が探していたものです。 –

3

あなたはgulp.jsを使用することができ、CLIを持っていますこのため。 julファイル(/path/to/files/*.js)のみを分離し、目的の場所に移動するためのgulpタスクを作成します。 数行のコードしか必要ありません。 必要に応じてpackage.jsonのスクリプトセクションにそれを含めます。

gulp.jsへのリンク:https://gulpjs.com/

var gulp = require('gulp'); 
gulp.task('jscopy', function(){ 
    return gulp.src('client/templates/*.js') 
    .pipe(gulp.dest('build/js')) 
}); 
関連する問題