• 
      

    Avoid bundling in JavaScript from nested node_modules.

    Review Request #13721 — Created April 8, 2024 and submitted — Latest diff uploaded

    Information

    Review Board
    release-7.x

    Reviewers

    When symlinking the Ink tree for development, I began to hit a confusing
    issue with Spina class setup. It turns out that we were getting two
    copies of Spina, two copies of Backbone, and two copies of Underscore in
    our 3rdparty.js build.

    The reason for this is that the Ink tree had its own node_modules, and
    Rollup prioritized pulling Ink's dependencies from there. That gave us
    unique copies for Ink that were namespaced internally separately from
    Review Board's. That also meant that Spina state was then kept in two
    places, causing all manner of problems.

    The reason this was happening was that Rollup.js defaults to considering
    any and all node_modules paths, by way of the moduleDirectories
    setting. This differs from modulePaths, which is an explicit set of
    paths (absolute or relative to the source tree).

    Since we know we only want the top-level one, we can set
    moduleDirectories to an empty list, ensuring that nested
    node_modules are no longer considered when bundling.

    Verified that this solved my duplicate module issue.

    Commits

    Files