Many UI libraries provide Sass source code
so that users can customize package styles or themes.
There hasn’t been an easy way to specify that
a file to be imported is from an installed package,
so build tools have provided a variety of ways to
import from a package and define where packages are installed.
This has meant that switching build tools
might result in unexpected gotchas, or that many more
potential paths need to be checked to see if a file exists
at that location.
The Node Package Importer will allow users
to specify with a
that an import is in a Node.js package
installed alongside their source code.
When a Node Package Importer is added to the importers for a compilation,
this directs Sass to find a Node.js module called
and import the default Sass file defined by the
I’m excited by what this provides library authors –
this makes it much more straightforward to expose
Sass source files, and to expect that users can
import those files, regardless of their setup.
It also allows library authors to take advantage
of package entry points, so they can specify
exactly which files are exposed, and at what paths.
For instance, an author could expose the file at
./src/sass/themes/_dark.scss in a way that would allow
someone using the package to simply write
This also uses conditional exports, so package authors
can specify a Sass default entry point that is different
I look forward to this feature shipping, and making integration easier for both
package authors and users.