如何在react-native的packager中将我的包的依赖项的特定node_modules列入黑名单?

时间:2015-05-05 09:28:09

标签: react-native packager

putting together a streamlined development process反应和反应原生:

  • 鼓励包裹,
  • 使用babel将es6转换为js(在发布/安装之前编译),
  • 有一个游乐场,让您可以同时使用native和网络components

它的网络部分非常好。这是导致问题的原生问题,它与反应原生的包装工具有关。

底线是:如果包通过npm link链接或直接从操场上需要,就像在require('../../') react-native的依赖解析器将永远尝试识别我的包中的依赖关系{{ 1}},大部分时间它都没有完成它。

我发现的临时解决方案是在操场上安装软件包,但这涉及每次更新时重新安装它,这不是很好,因为你无法立即看到你的更改(即使它会自动化,需要时间)。

我认为更好的解决方案是让依赖解析器忽略那些我不需要的特定模块(主要是node_modules中的那些模块!)。我尝试通过添加到该列表的路径来修改react-native/packager/blacklist.js,甚至对dependency resolver进行检查,但这些都不起作用。

对打包者有更多经验的人能否给我一个提示,告诉我如何让依赖解析器通过?或者,如果打包者可以分开并且转换过程可以选择但是我不知道这是否可行,那将是很好的。

1 个答案:

答案 0 :(得分:10)

根据default.config.js中的评论

,我找到了以下解决方案
* If you need to override any of this functions do so by defining the file
* `rn-cli.config.js` on the root of your project with the functions you need
* to tweak.

使用以下内容在项目的根目录中创建rn-cli.config.js

var blacklist = require('react-native/packager/blacklist');

var config = {
  getBlacklistRE(platform) {
    return blacklist([
      /node_modules\/my-package\/excluded-dir\/.*/
    ]);
  }
};

module.exports = config;

blacklist函数的第二个参数是列入黑名单的路径的附加列表,可以是正则表达式。有关更多示例,请参阅react-native/packager/blacklist.js