Resolve variables defined by other variables' values - to allow for conversion into languages not supporting lazy evaluation.
This was developed to be able to use variables declared in a less file inside of SCSS after conversion (e.g. through sast). Take a look at the test cases to better understand the implications and side effects.
const gonzales = require( 'gonzales-pe' ),
lessVariableResolver = require( 'less-variable-resolver' ),
sast = require( 'sast' );
// build AST from less
const lessTree = gonzales.parse(
fs.readFileSync( '_my_variables.less', 'utf8' ),
{ syntax: 'less' },
);
// resolve variables
lessVariableResolver.resolveVariablesInTree( lessTree );
// convert less to scss
const scssTree = sast.parse( lessTree.toString(), { syntax: 'less' } );
console.log( sast.stringify( scssTree ) ); // SCSS variables
The following examples use docker
and docker-compose
to ease creating a level playing field for development but are not essential to this project.
# ensure the node user uses your user id, so you own created files
docker-compose build --build-arg UID=$(id -u) --build-arg GID=$(id -g) node
docker-compose run --rm node npm install
docker-compose run --rm node npm test