Merge pull request 'Update to PostCSS 8' (#2) from jtojnar/icssify:postcss-8 into master
Reviewed-on: #2
This commit is contained in:
commit
49766a0ab6
16
index.js
16
index.js
|
@ -1,12 +1,14 @@
|
|||
"use strict";
|
||||
|
||||
const { validateArguments, required, oneOf, arrayOf, isString, isBoolean, allowExtraProperties, ValidationError } = require("validatem");
|
||||
|
||||
function isPostcssPlugin(value) {
|
||||
if (value.postcssPlugin == null || value.postcssVersion == null || typeof value !== "function") {
|
||||
throw new ValidationError(`Must be a PostCSS plugin`);
|
||||
}
|
||||
}
|
||||
const { validateArguments } = require("@validatem/core");
|
||||
const ValidationError = require("@validatem/error");
|
||||
const isBoolean = require("@validatem/is-boolean");
|
||||
const isPostcssPlugin = require("@validatem/is-postcss-plugin");
|
||||
const isString = require("@validatem/is-string");
|
||||
const required = require("@validatem/required");
|
||||
const arrayOf = require("@validatem/array-of");
|
||||
const oneOf = require("@validatem/one-of");
|
||||
const allowExtraProperties = require("@validatem/allow-extra-properties");
|
||||
|
||||
// FIXME: When there's >1 icssify instance set up on the Browserify instance (can this happen when a module specifies its own dependency on icssify?), either throw an error (if incompatible?) or merge the two somehow, so that there's only one resulting .css file
|
||||
|
||||
|
|
27
package.json
27
package.json
|
@ -22,6 +22,15 @@
|
|||
"url": "https://git.cryto.net/joepie91/icssify/issues"
|
||||
},
|
||||
"dependencies": {
|
||||
"@validatem/allow-extra-properties": "^0.1.0",
|
||||
"@validatem/array-of": "^0.1.2",
|
||||
"@validatem/core": "^0.3.15",
|
||||
"@validatem/error": "^1.1.0",
|
||||
"@validatem/is-boolean": "^0.1.1",
|
||||
"@validatem/is-postcss-plugin": "^0.2.0",
|
||||
"@validatem/is-string": "^1.0.0",
|
||||
"@validatem/one-of": "^0.1.1",
|
||||
"@validatem/required": "^0.1.1",
|
||||
"assure-array": "^1.0.0",
|
||||
"bl": "^4.0.0",
|
||||
"bluebird": "^3.7.1",
|
||||
|
@ -31,16 +40,18 @@
|
|||
"insert-css": "^2.0.0",
|
||||
"map-obj": "^4.1.0",
|
||||
"object.fromentries": "^2.0.1",
|
||||
"postcss": "^6.0.9",
|
||||
"postcss-modules-extract-imports": "^2.0.0",
|
||||
"postcss-modules-local-by-default": "^3.0.2",
|
||||
"postcss-modules-scope": "^2.1.0",
|
||||
"postcss-modules-values": "^3.0.0",
|
||||
"through2": "^2.0.3",
|
||||
"validatem": "^0.2.0"
|
||||
"postcss-modules-extract-imports": "^3.0.0",
|
||||
"postcss-modules-local-by-default": "^4.0.0",
|
||||
"postcss-modules-scope": "^3.0.0",
|
||||
"postcss-modules-values": "^4.0.0",
|
||||
"through2": "^2.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@joepie91/eslint-config": "^1.1.0",
|
||||
"eslint": "^6.8.0"
|
||||
"eslint": "^6.8.0",
|
||||
"postcss": "^8.0.0"
|
||||
},
|
||||
"peeerDependencies": {
|
||||
"postcss": "^8.0.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,28 +11,32 @@ Licensed under:
|
|||
MIT (https://opensource.org/licenses/MIT)
|
||||
*/
|
||||
|
||||
const postcss = require("postcss");
|
||||
const icssUtils = require("icss-utils");
|
||||
const loaderUtils = require("loader-utils");
|
||||
|
||||
const pluginName = 'postcss-icss-find-imports';
|
||||
|
||||
module.exports = postcss.plugin(pluginName, (_options = {}) => {
|
||||
return function process(css, result) {
|
||||
let discoveredImports = new Set();
|
||||
module.exports = (_options = {}) => {
|
||||
return {
|
||||
postcssPlugin: pluginName,
|
||||
Once(css, { result }) {
|
||||
let discoveredImports = new Set();
|
||||
|
||||
let { icssImports } = icssUtils.extractICSS(css, false);
|
||||
|
||||
for (let importUrl of Object.keys(icssImports)) {
|
||||
discoveredImports.add(loaderUtils.parseString(importUrl));
|
||||
}
|
||||
let { icssImports } = icssUtils.extractICSS(css, false);
|
||||
|
||||
for (let importUrl of Object.keys(icssImports)) {
|
||||
discoveredImports.add(loaderUtils.parseString(importUrl));
|
||||
}
|
||||
|
||||
for (let url of discoveredImports) {
|
||||
result.messages.push({
|
||||
pluginName: pluginName,
|
||||
type: "import",
|
||||
url: url
|
||||
});
|
||||
}
|
||||
for (let url of discoveredImports) {
|
||||
result.messages.push({
|
||||
pluginName: pluginName,
|
||||
type: "import",
|
||||
url: url
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.postcss = true;
|
||||
|
|
|
@ -11,67 +11,74 @@ Licensed under:
|
|||
MIT (https://opensource.org/licenses/MIT)
|
||||
*/
|
||||
|
||||
const postcss = require("postcss");
|
||||
const icssUtils = require("icss-utils");
|
||||
const loaderUtils = require("loader-utils");
|
||||
const { validateOptions, required, isFunction, isBoolean } = require("validatem");
|
||||
const { validateOptions } = require("@validatem/core");
|
||||
const required = require("@validatem/required");
|
||||
const isBoolean = require("@validatem/is-boolean");
|
||||
const isFunction = require("@validatem/is-function");
|
||||
|
||||
const pluginName = 'postcss-icss-parser';
|
||||
|
||||
module.exports = postcss.plugin(pluginName, (options = {}) => {
|
||||
validateOptions([options], {
|
||||
module.exports = function(options = {}) {
|
||||
validateOptions(arguments, {
|
||||
keyReplacer: [ required, isFunction ],
|
||||
autoExportImports: [ isBoolean ]
|
||||
});
|
||||
|
||||
return function process(css, result) {
|
||||
const importReplacements = Object.create(null);
|
||||
const { icssImports, icssExports } = icssUtils.extractICSS(css);
|
||||
return {
|
||||
postcssPlugin: pluginName,
|
||||
Once(css, { result }) {
|
||||
const importReplacements = Object.create(null);
|
||||
const { icssImports, icssExports } = icssUtils.extractICSS(css);
|
||||
|
||||
let index = 0;
|
||||
let index = 0;
|
||||
|
||||
for (const [ importUrl, imports ] of Object.entries(icssImports)) {
|
||||
const url = loaderUtils.parseString(importUrl);
|
||||
|
||||
for (const [ localKey, remoteKey ] of Object.entries(imports)) {
|
||||
index += 1;
|
||||
for (const [ importUrl, imports ] of Object.entries(icssImports)) {
|
||||
const url = loaderUtils.parseString(importUrl);
|
||||
|
||||
let newKey = options.keyReplacer({ localKey, remoteKey, index, url });
|
||||
importReplacements[localKey] = newKey;
|
||||
for (const [ localKey, remoteKey ] of Object.entries(imports)) {
|
||||
index += 1;
|
||||
|
||||
let newKey = options.keyReplacer({ localKey, remoteKey, index, url });
|
||||
importReplacements[localKey] = newKey;
|
||||
|
||||
result.messages.push({
|
||||
pluginName,
|
||||
type: 'icss-import',
|
||||
item: { url, localKey, remoteKey, newKey, index },
|
||||
});
|
||||
|
||||
if (options.autoExportImports !== false) {
|
||||
result.messages.push({
|
||||
pluginName: pluginName,
|
||||
type: "icss-export",
|
||||
item: {
|
||||
name: localKey,
|
||||
value: newKey
|
||||
}
|
||||
pluginName,
|
||||
type: 'icss-import',
|
||||
item: { url, localKey, remoteKey, newKey, index },
|
||||
});
|
||||
|
||||
if (options.autoExportImports !== false) {
|
||||
result.messages.push({
|
||||
pluginName: pluginName,
|
||||
type: "icss-export",
|
||||
item: {
|
||||
name: localKey,
|
||||
value: newKey
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
icssUtils.replaceSymbols(css, importReplacements);
|
||||
icssUtils.replaceSymbols(css, importReplacements);
|
||||
|
||||
for (const [ name, value ] of Object.entries(icssExports)) {
|
||||
/* This is to handle re-exports of imported items */
|
||||
const parsedValue = icssUtils.replaceValueSymbols(
|
||||
value,
|
||||
importReplacements
|
||||
);
|
||||
for (const [ name, value ] of Object.entries(icssExports)) {
|
||||
/* This is to handle re-exports of imported items */
|
||||
const parsedValue = icssUtils.replaceValueSymbols(
|
||||
value,
|
||||
importReplacements
|
||||
);
|
||||
|
||||
result.messages.push({
|
||||
pluginName: pluginName,
|
||||
type: "icss-export",
|
||||
item: { name, value: parsedValue }
|
||||
});
|
||||
}
|
||||
result.messages.push({
|
||||
pluginName: pluginName,
|
||||
type: "icss-export",
|
||||
item: { name, value: parsedValue }
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.postcss = true;
|
||||
|
|
Loading…
Reference in a new issue