如何全局强制节点需要加载不同的包然后原始的

时间:2017-10-13 13:12:21

标签: node.js

让我们说我使用的包A取决于包B.在我的代码中我只需要A.如何强制A加载包C而不是包B?< / p>

这样做的目的是,有时如果C是B的分支,但是以不同的名称发布,我想强制库A使用C代替B。

是否有任何npm软件包可以帮助解决这个问题,并且可以在没有风险的情况下用于生产?

1 个答案:

答案 0 :(得分:0)

这种方法广泛用于不使用依赖注入的应用程序的单元测试,但使用常见的js模块。

例如,您可以使用npm模块proxyquire

样品:

a: Rule 1           a
             --->q0--->(q1)

b: Rule 1           b
             --->q0--->(q1)

a*: Rule 4         +-------------+
                   |      e      |
                   V             |
             --->(q0)--->q0'--->(q1)
                      e      a

b*: Rule 4         +-------------+
                   |      e      |
                   V             |
             --->(q0)--->q0'--->(q1)
                      e      b

a*b*: Rule 2      +-----------+
                  |           | e
                  V e      a  |
             --->q0--->q0'--->q1
                  |           |
                e |           | e
                  +-----------+--+
                  |              | e
                  V   e      b   |
                 (q2)--->q2'--->(q3)

a*b*: Rule 2      +-----------+
                  |           | e
                  V e      a  |
             --->q0--->q0'--->q1
                  |           |
                e |           | e
                  +-----------+
                  |           | e
                  V  e    b   |
                 q2--->q3'--->q3
                  |           |
                e |           | e
                  +-----------+--+
                  |              | e
                  V   e      a   |
                 (q4)--->q5'--->(q5)