如何忽略其他文件或组件所需的node.js中的文件

以下可以忽略或执行导入文件的一些修改,例如在我的index.js中

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

不过,我真的不想忽略index.js中的这些文件,我想忽略在随后的文件/组件中导入的文件

 require.extensions['.js'] = function(file) { console.log(file.id) return; }; require('babel-register') require('./components/Test.spec.js'); 

例如这将logging下面的内容并返回

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

真的是我想要的是它忽略Test.spec.js文件中的任何包含的特定types的文件

我知道在babel中指定忽略的选项,但是这只是忽略了他们被转发,所以不是真正的我想要的。 基本上我想要一个特定的文件types,例如.jsx不被编译,或者我可以重写这个需求并返回另一个函数。

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

这黑客应该工作:

 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