Research
Security News
Threat Actor Exposes Playbook for Exploiting npm to Build Blockchain-Powered Botnets
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
sass-graph
Advanced tools
The sass-graph npm package is a utility that helps in analyzing the dependencies of Sass files in a project. It parses Sass files to find all the `@import` statements and constructs a graph of the relationships between files. This is particularly useful for understanding and managing complex stylesheets structures in large projects.
Parsing a directory of Sass files
This feature allows you to parse an entire directory of Sass files to create a graph representing the dependencies between them.
const sassGraph = require('sass-graph');
const graph = sassGraph.parseDir('path/to/sass/files');
Finding dependencies of a single Sass file
This feature is used to find all the files that depend on a single Sass file, which can be useful for understanding the impact of changes to that file.
const sassGraph = require('sass-graph');
const graph = sassGraph.parseFile('path/to/sass/file.scss', options);
const dependencies = graph.index['path/to/sass/file.scss'].importedBy;
Watching a directory of Sass files for changes
This feature sets up a watcher on a directory of Sass files and triggers a callback with the changed files when a change is detected.
const sassGraph = require('sass-graph');
const graph = sassGraph.parseDir('path/to/sass/files');
sassGraph.watch('path/to/sass/files', options, (changedFiles) => {
console.log('Files changed:', changedFiles);
});
PostCSS is a tool for transforming CSS with JavaScript plugins. While it is not limited to Sass, it can be used to analyze and manipulate CSS dependencies, similar to how sass-graph analyzes Sass dependencies.
node-sass-magic-importer is a custom importer for node-sass that adds additional features to the standard Sass `@import` rule. It provides functionalities that can help manage dependencies, but it is more focused on extending the import capabilities rather than analyzing the dependency graph.
Stylelint is a linter for stylesheets that can be used to enforce consistent conventions and avoid errors in stylesheets. It does not construct a dependency graph like sass-graph, but it can be used to analyze and lint the structure of Sass files.
Parses Sass files in a directory and exposes a graph of dependencies
Install with npm
npm install --save-dev sass-graph
Usage as a Node library:
var sassGraph = require('./sass-graph');
Usage as a command line tool:
The command line tool will parse a graph and then either display ancestors, descendents or both.
$ ./bin/sassgraph --help
Usage: bin/sassgraph <command> [options] <dir> [file]
Commands:
ancestors Output the ancestors
descendents Output the descendents
Options:
-I, --load-path Add directories to the sass load path
-e, --extensions File extensions to include in the graph
-j, --json Output the index in json
-h, --help Show help
-v, --version Show version number
Examples:
./bin/sassgraph descendents test/fixtures test/fixtures/a.scss
/path/to/test/fixtures/b.scss
/path/to/test/fixtures/_c.scss
Parses a directory and builds a dependency graph of all requested file extensions.
Parses a file and builds its dependency graph.
Type: Array
Default: [process.cwd]
Directories to use when resolved @import
directives.
Type: Array
Default: ['scss', 'css']
File types to be parsed.
var sassGraph = require('./sass-graph');
console.log(sassGraph.parseDir('test/fixtures'));
//{ index: {,
// '/path/to/test/fixtures/a.scss': {
// imports: ['b.scss'],
// importedBy: [],
// },
// '/path/to/test/fixtures/b.scss': {
// imports: ['_c.scss'],
// importedBy: ['a.scss'],
// },
// '/path/to/test/fixtures/_c.scss': {
// imports: [],
// importedBy: ['b/scss'],
// },
//}}
You can run the tests by executing the following commands:
npm install
npm test
Sass graph was originally written by Lachlan Donald. It is now maintained by Michael Mifsud.
MIT
[2.1.0]
FAQs
Parse sass files and extract a graph of imports
The npm package sass-graph receives a total of 866,267 weekly downloads. As such, sass-graph popularity was classified as popular.
We found that sass-graph demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
Security News
NVD’s backlog surpasses 20,000 CVEs as analysis slows and NIST announces new system updates to address ongoing delays.
Security News
Research
A malicious npm package disguised as a WhatsApp client is exploiting authentication flows with a remote kill switch to exfiltrate data and destroy files.