/
lostSun
/
project-client-server-apps
Обзор
Документация
Войти
/
lostSun
/
project-client-server-apps
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
node_modules/postcss-normalize-charset/src/index.js
56 строк
1 KB
1lostsun
initial commit
05 май 2025, 11:35
05 май 2025, 11:35
fe8f535
Код
Авторство
О чём код?
'use strict'; const charset = 'charset'; // eslint-disable-next-line no-control-regex const nonAscii = /[^\x00-\x7F]/; /** * @typedef {{add?: boolean}} Options */ /** * @type {import('postcss').PluginCreator<Options>} * @param {Options} opts * @return {import('postcss').Plugin} */ function pluginCreator(opts = {}) { return { postcssPlugin: 'postcss-normalize-' + charset, OnceExit(css, { AtRule }) { /** @type {import('postcss').AtRule | undefined} */ let charsetRule; /** @type {import('postcss').Node | undefined} */ let nonAsciiNode; css.walk((node) => { if (node.type === 'atrule' && node.name === charset) { if (!charsetRule) { charsetRule = node; } node.remove(); } else if ( !nonAsciiNode && node.parent === css && nonAscii.test(node.toString()) ) { nonAsciiNode = node; } }); if (nonAsciiNode) { if (!charsetRule && opts.add !== false) { charsetRule = new AtRule({ name: charset, params: '"utf-8"', }); } if (charsetRule) { charsetRule.source = nonAsciiNode.source; css.prepend(charsetRule); } } }, }; } pluginCreator.postcss = true; module.exports = pluginCreator;