-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathpostcss.resolve-absolute.js
More file actions
30 lines (23 loc) · 987 Bytes
/
postcss.resolve-absolute.js
File metadata and controls
30 lines (23 loc) · 987 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
const weblog = require('webpack-log');
const postcssUrl = require('postcss-url');
const logger = weblog({ name: 'resolve-absolute' });
const ABSOLUTE_PATTERN = /^\/([^/])/;
const ABSOLUTE_REPLACE = '../$1';
module.exports = ({ silent }) => {
const plugin = postcssUrl({
url(asset, dir, options, decl, warn) {
const { originUrl } = asset;
if (!ABSOLUTE_PATTERN.test(originUrl)) return originUrl;
const resolvedUrl = originUrl.replace(ABSOLUTE_PATTERN, ABSOLUTE_REPLACE); // resolve absolute urls
const message = [`Absolute url(${JSON.stringify(originUrl)}) resolved as url(${JSON.stringify(resolvedUrl)}).`, 'Please fix to relative.'].join(
' ',
);
warn(message);
logger.error(message);
if (!silent) throw new Error(message);
return resolvedUrl;
},
});
plugin.postcssPlugin = 'postcss.resolve-absolute.js';
return plugin;
};