2013-08-15 15 views
13

"dist"に必要なファイルだけをコピーするのに、package.jsonの "main"または展開。私はそれのための頭のいい仕事があったと思ったが、私は私を助けたり教えてくれるものは見ない。私は今、node_modulesの下のすべてをコピーしますが、私は確かにライブラリのサンプルコードを配布する必要はありません。gruntとgrunt-contrib-copyを使用して配布に必要なファイルだけをnode_modulesからコピーする方法

grunt-contrib-copyを正しく使用して、configオブジェクトの標準pkgオブジェクト(解析されたpackage.jsonファイル)からnode_module依存関係のファイルをコピーするだけの方法はありますか?

答えて

10

package.jsonには、何を含めるべきかを知るための十分な情報が含まれていません。 requireステートメントをすべて解析する必要がありますが、モジュール読み込みリソースなどのように検出できない場合もあります。

これを行う正しい方法は、パッケージ作成者がファイルを無視することです。 .npmignore file以上を使用する必要はありません。パッケージに含めるファイルを明示的に定義するには、package.jsonにfiles propertyを使用してください。

は残念ながら、しかし、ほとんどのパッケージ作者は怠惰であり、

私はfilesプロパティで問題のモジュール上のPRを開くことをお勧めします...これのいずれかと気にしないでください。

6

あなたがすることができます

1)使用のコピータスクディレクトリをdestに関連する各ファイルをコピーする:

copy: 
    js: 
    files: [ 
     { 
     expand: true, 
     cwd: 'node_modules/jquery', 
     src: 'jquery.min.js', 
     dest: 'www/js' 
     }, 
     { 
     expand: true, 
     cwd: 'node_modules/jquery-mobile-bower/js', 
     src: 'jquery.mobile-*.min.js', 
     dest: 'www/js' 
     } 
    ] 

jquery.min.jsとjquery.mobile-xyzmin.jsは、両方のコピーされますwww/jsディレクトリに移動します。

2)独自のjavascriptの/スタイルシートファイルを生成するために、単一のDESTファイル(便利にすべてのファイルをCONCATするために、連結タスクを使用)

concat: 
    options: 
    separator: ';' 
    js: 
    dest: 'www/js/lib.js' 
    src: [ 
     'node_modules/jquery/jquery.min.js', 
     'node_modules/jquery-mobile-bower/js/jquery.mobile-*.min.js' 
    ] 

jquery.min.jsとjquery.mobile-xyzmin.jsます単一のwww/js/lib.jsファイルにセミコロンで区切ってマージします。

+0

私は現在、#2を行う "正しい"方法は、jsファイルを手動で連結するのではなく、BrowserifyまたはWebpackを使うことだと思います。 – Scribblemacher

関連する問題