2016-05-04 2 views
6

以下は、インポートされたファイルを無視したり、変更したりすることができます。私のindex.js他のファイルやコンポーネントに必要なnode.jsファイルを無視するにはどうすればいいですか?

require.extensions['.js'] = function(file) { 
    console.log(file.id) 
    return; 
}; 

で、私は本当に私が後続のファイル/コンポーネント例えば

require.extensions['.js'] = function(file) { 
    console.log(file.id) 
    return; 
}; 

require('babel-register') 

require('./components/Test.spec.js'); 

にインポートしたファイルにこのログを無視したいindex.jsでこれらのファイルを無視する必要はありませんがそれは任意のTest.spec.jsファイル

で特定の種類のファイルが含まれて無視するために、次のと本当に私が欲しいもの

/Users/me/myapp/node_modules/babel-register/lib/node.js 
/Users/me/myapp/tests/components/Test.spec.js 

を返すことです

私はbabelでignoreを指定するオプションを知っていますが、これはそれらが無視されているため無視されますので、実際には私が望むものではありません。基本的には、特定のファイルタイプが必要です。 .jsxをコンパイルしないでください。あるいは、これをオーバーライドして別の関数を返すこともできます。

https://babeljs.io/docs/usage/require/

+0

具体的には、これを実行して何を達成しようとしていますか? – loganfsmyth

+1

テープと酵素でテストしている反応成分に含まれるsvgファイルを無視したい。実行時に[css-modules-require-hook](https://github.com/css-modules/css-modules-require-hook)のCSSファイルが必要なのと同様に、 –

+0

はまだ不明です。テスト時やプロダクションビルド時にそれらを無視したいですか? – Danosaure

答えて

0

このハックは動作するはずです:いずれかが必要とする前に

ignore = []; 
var original_require = require; 
require = function(file){ 
    if(ignore.indexOf(file)!=-1) return original_require(file); 
}; 

ただ、このコードを貼り付けます。 そして今、あなたはこれを行うことができます。

ファイルa.js:

console.log('I\'m a');  
ignore.push('./c'); 
require('./b'); 

ファイルb.js:

console.log('I\'m b'); 
require('./c'); 

ファイルc.js:

console.log('I\'m c'); 

結果

I'm a 
I'm b 
関連する問題