Skip to content

Commit

Permalink
Fix currentFileInfo and index properties on nodes (#3602)
Browse files Browse the repository at this point in the history
These fields are accessed by other tools such as parcel (for resolving local
asset URLs). As per 257efdd the behavior with
(at least) parcel for relative paths in sub-directries changed. Prior to that
commit (last release 3.12.2) assets were resolved relative to the less module
that contains the `url(..)`. From release 3.13.0 parcel resolves assets relative
to the root less module, because no `currentFileInfo` is available.

This is caused by tree nodes setting their prototype to an instance of
`Node`. This leaves the `self` reference in `Node`s constructor pointing to the
prototype, not the actual instance the data is set on. Replacing this with
properties defined on `Node`s prototype fixes this.
  • Loading branch information
bjpbakker committed Feb 8, 2021
1 parent 870f9b2 commit b37922c
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions packages/less/src/less/tree/node.js
Expand Up @@ -11,15 +11,14 @@ class Node {
this.nodeVisible = undefined;
this.rootNode = null;
this.parsed = null;
}

const self = this;
Object.defineProperty(this, 'currentFileInfo', {
get: function() { return self.fileInfo(); }
});
Object.defineProperty(this, 'index', {
get: function() { return self.getIndex(); }
});
get currentFileInfo() {
return this.fileInfo();
}

get index() {
return this.getIndex();
}

setParent(nodes, parent) {
Expand Down

0 comments on commit b37922c

Please sign in to comment.