The SASS compiler uses each path in loadPaths when resolving SASS @imports.
loadPaths: ['styles/foo', 'styles/bar']
@import "x"; // found via ./styles/foo/_x.scss
@import "y"; // found via ./styles/bar/_y.scss
Note that the compiler resolves each @import by considering each path in loadPaths
from left-to-right (similar to $PATH
in a UNIX environment). An example scenario could be:
loadPaths: ['styles/i', 'styles/ii', 'styles/iii', 'styles/iv']
@import "x"; // no file at ./styles/i/_x.scss
// no file at ./styles/ii/_x.scss
// found a file at ./styles/iii/_x.scss ...
// ... this file will be used as the import
// ... terminate lookup
// the file ./styles/iv/_x.scss will be ignored
There was no _x.scss
file in styles/i
, so it moved on to look inside styles/ii
. Eventually it found an _x.scss
file in styles/iii
and finished the lookup. It looks at each folder in loadPaths
starting from the first element in the array and moving right. After attempting all paths, if we can't find the file, then we declare that this @import statement is invalid.
Load paths is useful if you have a external library (like bournon/neat).
The external library is large and will use lots of @import statements. However they won't match your project folder structure and so won't resolve. However, you can add an extra folders to the loadPaths so that the @imports inside the external library do resolve.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…