
Research
/Security News
10 npm Typosquatted Packages Deploy Multi-Stage Credential Harvester
Socket researchers found 10 typosquatted npm packages that auto-run on install, show fake CAPTCHAs, fingerprint by IP, and deploy a credential stealer.
style-resources-loader
Advanced tools
npm i style-resources-loader -D
This loader is a CSS processor resources loader for webpack, which injects your style resources (e.g. variables, mixins) into multiple imported css, sass, scss, less, stylus modules.
It's mainly used to
variables, mixins, functions across all style files, so you don't need to @import them manually.variables in style files provided by other libraries (e.g. ant-design) and customize your own theme.See automatic imports for more details.
Prepends variables and mixins to all scss files with default resources injector.
webpack.config.js
module.exports = {
// ...
module: {
rules: [{
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'sass-loader', {
loader: 'style-resources-loader',
options: {
patterns: [
'./path/from/context/to/scss/variables/*.scss',
'./path/from/context/to/scss/mixins/*.scss',
]
}
}]
}]
},
// ...
}
Appends variables to all less files and overrides original less variables.
webpack.config.js
module.exports = {
// ...
module: {
rules: [{
test: /\.less$/,
use: ['style-loader', 'css-loader', 'less-loader', {
loader: 'style-resources-loader',
options: {
patterns: path.resolve(__dirname, 'path/to/less/variables/*.less'),
injector: 'append'
}
}]
}]
},
// ...
}
Prepends variables and mixins to all stylus files with customized resources injector.
webpack.config.js
module.exports = {
// ...
module: {
rules: [{
test: /\.styl$/,
use: ['style-loader', 'css-loader', 'stylus-loader', {
loader: 'style-resources-loader',
options: {
patterns: [
path.resolve(__dirname, 'path/to/stylus/variables/*.styl'),
path.resolve(__dirname, 'path/to/stylus/mixins/*.styl')
],
injector: (source, resources) => {
const combineAll = type => resources
.filter(({ file }) => file.includes(type))
.map(({ content }) => content)
.join('');
return combineAll('variables') + combineAll('mixins') + source;
}
}
}]
}]
},
// ...
}
| Name | Type | Default | Description |
|---|---|---|---|
patterns | string | string[] | / | Path to the resources you would like to inject |
injector | Injector | 'prepend' | 'append' | 'prepend' | Controls the resources injection precisely |
globOptions | GlobOptions | {} | An options that can be passed to glob(...) |
resolveUrl | boolean | true | Enable/Disable @import url to be resolved |
See the type definition file for more details.
patternsA string or an array of string, which represents the path to the resources you would like to inject. If the path is relative, it would relative to webpack context.
It supports globbing. You could include many files using a file mask.
For example, './styles/*/*.less' would include all less files from variables and mixins directories and ignore reset.less in such following structure.
./src <-- webpack context
/styles
/variables
|-- fonts.less
|-- colors.less
/mixins
|-- size.less
|-- reset.less
Only supports .css .sass .scss .less .styl as resources file extensions.
injectorAn optional function which controls the resources injection precisely. It also supports 'prepend' and 'append' for convenience, which means the loader will prepend or append all resources to source files, respectively.
It defaults to 'prepend', which implements as an injector function internally.
Furthermore, an injector function should match the following type signature:
type Injector = (
this: LoaderContext,
source: string,
resources: StyleResource[],
) => string | Promise<string>
It receives two parameters:
| Name | Type | Description |
|---|---|---|
source | string | Content of the source file |
resources | StyleResource[] | Resource descriptors |
It is called with this context pointing to the loader context.
resourcesAn array of resource descriptor, each contains file and content properties:
| Name | Type | Description |
|---|---|---|
file | string | Absolute path to the resource |
content | string | Content of the resource file |
It can be asynchronous. You could use async / await syntax in your own injector function or just return a promise.
globOptionsOptions that can be passed to glob(...). See node-glob options for more details.
resolveUrlA boolean which defaults to true. It represents whether the relative path in @import or @require statements should be resolved.
If you were to use @import or @require statements in style resource files, you should make sure that the URL is relative to that resource file, rather than the source file.
You could disable this feature by setting resolveUrl to false.
1.5.0 (December 8, 2021)
this context pointing to the loader context.sass-resources-loader is a webpack loader that works similarly to style-resources-loader but is specifically designed for Sass/SCSS. It allows you to inject shared resources like variables, mixins, and functions into every Sass/SCSS file processed by webpack. Compared to style-resources-loader, it is more focused and does not support other preprocessors like Less or Stylus.
less-loader is a webpack loader for compiling Less files. While it does not directly inject shared resources, it allows you to configure global variables and mixins through the `globalVars` and `modifyVars` options. This makes it somewhat comparable to style-resources-loader for Less projects, but it lacks the multi-preprocessor support.
stylus-loader is a webpack loader for compiling Stylus files. Similar to less-loader, it does not directly inject shared resources but allows you to configure global variables and mixins through the `import` option. This makes it a comparable tool for Stylus projects, but it does not offer the same level of multi-preprocessor support as style-resources-loader.
FAQs
CSS processor resources loader for webpack
The npm package style-resources-loader receives a total of 149,773 weekly downloads. As such, style-resources-loader popularity was classified as popular.
We found that style-resources-loader demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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
Socket researchers found 10 typosquatted npm packages that auto-run on install, show fake CAPTCHAs, fingerprint by IP, and deploy a credential stealer.

Product
Socket Firewall Enterprise is now available with flexible deployment, configurable policies, and expanded language support.

Security News
Open source dashboard CNAPulse tracks CVE Numbering Authorities’ publishing activity, highlighting trends and transparency across the CVE ecosystem.