rollup-plugin-lib-style 2.3.1 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2023 Daniel Amenou
3
+ Copyright (c) 2025 Daniel Amenou
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
package/README.md CHANGED
@@ -87,6 +87,26 @@ Type: object[]<br />
87
87
  Default: []<br />
88
88
  Description: [PostCSS Plugins](https://postcss.org/docs/postcss-plugins)
89
89
 
90
+ ### sassOptions
91
+
92
+ Type: object<br />
93
+ Default: {}<br />
94
+ Description: Options passed to the sass compiler. Can be used to set `loadPaths` for global imports/mixins.<br />
95
+ Example:
96
+
97
+ ```js
98
+ // rollup.config.js
99
+ export default {
100
+ plugins: [
101
+ libStylePlugin({
102
+ sassOptions: {
103
+ loadPaths: ["./src/styles", "./node_modules"],
104
+ },
105
+ }),
106
+ ],
107
+ }
108
+ ```
109
+
90
110
  ### loaders
91
111
 
92
112
  Type: Loader[]<br />
@@ -107,6 +127,29 @@ export default {
107
127
  }
108
128
  ```
109
129
 
130
+ You can also override the default SCSS loader to customize sass compilation:
131
+
132
+ ```js
133
+ // rollup.config.js
134
+ import sass from "sass"
135
+
136
+ const customSassLoader = {
137
+ name: "sass",
138
+ regex: /\.(sass|scss)$/,
139
+ process: ({filePath}) => ({
140
+ code: sass
141
+ .compile(filePath, {
142
+ loadPaths: ["./src/styles", "./node_modules"],
143
+ })
144
+ .css.toString(),
145
+ }),
146
+ }
147
+
148
+ export default {
149
+ plugins: [libStylePlugin({loaders: [customSassLoader]})],
150
+ }
151
+ ```
152
+
110
153
  ### exclude
111
154
 
112
155
  Type: Array<string | RegExp> | string | RegExp<br />
package/lib/index.es.js CHANGED
@@ -119,7 +119,9 @@ const defaultLoaders = [
119
119
  {
120
120
  name: "sass",
121
121
  regex: /\.(sass|scss)$/,
122
- process: ({filePath}) => ({code: sass.compile(filePath).css.toString()}),
122
+ process: ({filePath, options}) => ({
123
+ code: sass.compile(filePath, options?.sassOptions || {}).css.toString(),
124
+ }),
123
125
  },
124
126
  {
125
127
  name: "css",
@@ -131,7 +133,7 @@ const defaultLoaders = [
131
133
  const replaceMagicPath = (fileContent, customPath = ".") => fileContent.replace(MAGIC_PATH_REGEX, customPath);
132
134
 
133
135
  const libStylePlugin = (options = {}) => {
134
- const {customPath, customCSSPath, customCSSInjectedPath, loaders, include, exclude, importCSS = true, ...postCssOptions} = options;
136
+ const {customPath, customCSSPath, customCSSInjectedPath, loaders, include, exclude, importCSS = true, sassOptions = {}, ...postCssOptions} = options;
135
137
  const allLoaders = [...(loaders || []), ...defaultLoaders];
136
138
  const filter = createFilter(include, exclude);
137
139
  const getLoader = (filepath) => allLoaders.find((loader) => loader.regex.test(filepath));
@@ -150,7 +152,7 @@ const libStylePlugin = (options = {}) => {
150
152
 
151
153
  modulesIds.add(id);
152
154
 
153
- const rawCss = await loader.process({filePath: id, code});
155
+ const rawCss = await loader.process({filePath: id, code, options: {sassOptions}});
154
156
 
155
157
  const postCssResult = await postCssLoader({code: rawCss.code, fiePath: id, options: postCssOptions});
156
158
 
@@ -162,11 +164,12 @@ const libStylePlugin = (options = {}) => {
162
164
 
163
165
  const cssFilePath = customCSSPath ? customCSSPath(id) : getFilePath();
164
166
  const cssFileInjectedPath = customCSSInjectedPath ? customCSSInjectedPath(cssFilePath) : cssFilePath;
167
+ const cssFilePathWithoutSlash = cssFilePath.startsWith("/") ? cssFilePath.substring(1) : cssFilePath;
165
168
 
166
169
  // create a new css file with the generated hash class names
167
170
  this.emitFile({
168
171
  type: "asset",
169
- fileName: cssFilePath.replace("/", "").replace(loader.regex, ".css"),
172
+ fileName: cssFilePathWithoutSlash.replace(loader.regex, ".css"),
170
173
  source: postCssResult.extracted.code,
171
174
  });
172
175
 
package/lib/index.js CHANGED
@@ -121,7 +121,9 @@ const defaultLoaders = [
121
121
  {
122
122
  name: "sass",
123
123
  regex: /\.(sass|scss)$/,
124
- process: ({filePath}) => ({code: sass.compile(filePath).css.toString()}),
124
+ process: ({filePath, options}) => ({
125
+ code: sass.compile(filePath, options?.sassOptions || {}).css.toString(),
126
+ }),
125
127
  },
126
128
  {
127
129
  name: "css",
@@ -133,7 +135,7 @@ const defaultLoaders = [
133
135
  const replaceMagicPath = (fileContent, customPath = ".") => fileContent.replace(MAGIC_PATH_REGEX, customPath);
134
136
 
135
137
  const libStylePlugin = (options = {}) => {
136
- const {customPath, customCSSPath, customCSSInjectedPath, loaders, include, exclude, importCSS = true, ...postCssOptions} = options;
138
+ const {customPath, customCSSPath, customCSSInjectedPath, loaders, include, exclude, importCSS = true, sassOptions = {}, ...postCssOptions} = options;
137
139
  const allLoaders = [...(loaders || []), ...defaultLoaders];
138
140
  const filter = rollupPluginutils.createFilter(include, exclude);
139
141
  const getLoader = (filepath) => allLoaders.find((loader) => loader.regex.test(filepath));
@@ -152,7 +154,7 @@ const libStylePlugin = (options = {}) => {
152
154
 
153
155
  modulesIds.add(id);
154
156
 
155
- const rawCss = await loader.process({filePath: id, code});
157
+ const rawCss = await loader.process({filePath: id, code, options: {sassOptions}});
156
158
 
157
159
  const postCssResult = await postCssLoader({code: rawCss.code, fiePath: id, options: postCssOptions});
158
160
 
@@ -164,11 +166,12 @@ const libStylePlugin = (options = {}) => {
164
166
 
165
167
  const cssFilePath = customCSSPath ? customCSSPath(id) : getFilePath();
166
168
  const cssFileInjectedPath = customCSSInjectedPath ? customCSSInjectedPath(cssFilePath) : cssFilePath;
169
+ const cssFilePathWithoutSlash = cssFilePath.startsWith("/") ? cssFilePath.substring(1) : cssFilePath;
167
170
 
168
171
  // create a new css file with the generated hash class names
169
172
  this.emitFile({
170
173
  type: "asset",
171
- fileName: cssFilePath.replace("/", "").replace(loader.regex, ".css"),
174
+ fileName: cssFilePathWithoutSlash.replace(loader.regex, ".css"),
172
175
  source: postCssResult.extracted.code,
173
176
  });
174
177
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rollup-plugin-lib-style",
3
- "version": "2.3.1",
3
+ "version": "2.4.0",
4
4
  "description": "A Rollup plugin that converts CSS and extensions for CSS into CSS modules and imports the generated CSS files",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/index.es.js",
package/types/index.d.ts CHANGED
@@ -1,8 +1,14 @@
1
- import { PluginImpl, RollupWarning } from "rollup"
1
+ import {PluginImpl, RollupWarning} from "rollup"
2
2
 
3
3
  declare interface ProcessArgs {
4
4
  code: string
5
5
  filePath: string
6
+ options?: any
7
+ }
8
+
9
+ declare interface SassOptions {
10
+ loadPaths?: string[]
11
+ [key: string]: any
6
12
  }
7
13
 
8
14
  declare interface Loader {
@@ -22,10 +28,11 @@ declare interface Options {
22
28
  customPath?: string
23
29
  customCSSPath?: (id: string) => string
24
30
  customCSSInjectedPath?: (id: string) => string
31
+ sassOptions?: SassOptions
25
32
  }
26
33
 
27
34
  declare const onwarn: (warning: RollupWarning, defaultHandler: (warning: string | RollupWarning) => void) => void
28
35
 
29
36
  declare const libStylePlugin: PluginImpl<Options>
30
37
 
31
- export { onwarn, libStylePlugin }
38
+ export {onwarn, libStylePlugin}