Skip to content

Commit 476ebca

Browse files
refactor: migrate on message api for postcss-import-parser (#837)
1 parent 7b967c7 commit 476ebca

File tree

4 files changed

+23
-18
lines changed

4 files changed

+23
-18
lines changed

lib/loader.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,11 @@ module.exports = function loader(content, map) {
9191
];
9292

9393
if (resolveImport) {
94-
plugins.push(importParser(parserOptions));
94+
plugins.push(importParser());
9595
}
9696

9797
if (resolveUrl) {
98-
plugins.push(urlParser(parserOptions));
98+
plugins.push(urlParser());
9999
}
100100

101101
plugins.push(icssParser(parserOptions));

lib/plugins/postcss-icss-parser.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ module.exports = postcss.plugin(
99
pluginName,
1010
(options) =>
1111
function process(css, result) {
12-
const importItems = options.importItems || [];
12+
const importItems = (result.messages || [])
13+
.filter((message) => message.type === 'import')
14+
.map((message) => message.item);
15+
1316
const imports = {};
1417
const icss = icssUtils.extractICSS(css);
1518
const exports = icss.icssExports;
@@ -21,6 +24,7 @@ module.exports = postcss.plugin(
2124
imports[`$${prop}`] = importItems.length;
2225
importItems.push({
2326
url,
27+
media: '',
2428
export: icss.icssImports[key][prop],
2529
});
2630
});

lib/plugins/postcss-import-parser.js

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,8 @@ function parseImport(params) {
4646

4747
module.exports = postcss.plugin(
4848
pluginName,
49-
(options) =>
49+
() =>
5050
function process(css, result) {
51-
const importItems = [];
52-
5351
css.walkAtRules(/^import$/i, (atRule) => {
5452
// Convert only top-level @import
5553
if (atRule.parent.type !== 'root') {
@@ -84,16 +82,23 @@ module.exports = postcss.plugin(
8482
url = loaderUtils.urlToRequest(url);
8583
}
8684

87-
const includes = importItems.find(
88-
(el) => el.url === url && el.media === media
85+
const alreadyIncluded = result.messages.find(
86+
(message) =>
87+
message.pluginName === pluginName &&
88+
message.type === 'import' &&
89+
message.item.url === url &&
90+
message.item.media === media
8991
);
9092

91-
if (!includes) {
92-
importItems.push({ url, media, isUrlRequest });
93+
if (alreadyIncluded) {
94+
return;
9395
}
94-
});
9596

96-
// eslint-disable-next-line no-param-reassign
97-
options.importItems = importItems;
97+
result.messages.push({
98+
pluginName,
99+
type: 'import',
100+
item: { url, media },
101+
});
102+
});
98103
}
99104
);

lib/plugins/postcss-url-parser.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,8 @@ function uniq(array) {
9797

9898
module.exports = postcss.plugin(
9999
pluginName,
100-
(options) =>
100+
() =>
101101
function process(css, result) {
102-
const urlItems = [];
103102
const traversed = walkDeclsWithUrl(css, result, (value) =>
104103
isUrlRequest(value)
105104
);
@@ -128,8 +127,5 @@ module.exports = postcss.plugin(
128127
// eslint-disable-next-line no-param-reassign
129128
item.decl.value = item.parsed.toString();
130129
});
131-
132-
// eslint-disable-next-line no-param-reassign
133-
options.urlItems = urlItems;
134130
}
135131
);

0 commit comments

Comments
 (0)