ビルドツールとしてnpmを試しています。
私が遭遇した一つのつまずきは、JavaScriptファイルをあるフォルダーから別のフォルダーにコピーする必要があることです。ソースフォルダーにはTypeScriptファイル、javascriptファイル、マップファイルが含まれていますが、ターゲットフォルダーにはjavascriptファイルのみが必要です。
各ファイルのコピー文を作成したくありませんが、すべての.jsファイルをコピーしたいと思います。また、ソースフォルダーには、javascriptファイルも含むサブフォルダーが含まれています。これらもコピーする必要があり、サブフォルダー構造を維持します。
私が試みたのは、フィルターで NCP を使用することですが、フィルターを機能させることができません。フィルターで使用されている正規表現をテストしましたが、正常に動作するようです。テストは Regex Tester で行われ、正規表現.*\.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のスクリプトセクション内で、特定の拡張子を持つファイルのみを別のフォルダーにコピーするにはどうすればよいですか?私は目がくらむほど明らかな何かを見落としていると確信しています...
cpx が適切な代替手段になる場合があります。
CLIがあり、正規表現の代わりにグロブを使用でき、ディレクトリツリーを保持でき、これを書いている時点では比較的最新です。
copyfiles
というnpmモジュールもあります https://github.com/calvinmetcalf/copyfiles
例えば。すべての*.css
ファイルを./src
フォルダーから./styles
フォルダーにコピーするには:
copyfiles --flat src/*.css styles
これにはgulp.jsを使用できます。 gulpタスクを記述して、jsファイル(/path/to/files/*.js)のみを分離し、選択した宛先に移動します。数行のコードのみが必要です。必要に応じて、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'))
});