Son CV dans un terminal web en Javascript! https://terminal-cv.gregandev.fr
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

155 lines
4.1 KiB

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.load = load;
function _path() {
const data = _interopRequireDefault(require("path"));
_path = function () {
return data;
};
return data;
}
function _utils() {
const data = require("@parcel/utils");
_utils = function () {
return data;
};
return data;
}
function _nullthrows() {
const data = _interopRequireDefault(require("nullthrows"));
_nullthrows = function () {
return data;
};
return data;
}
function _clone() {
const data = _interopRequireDefault(require("clone"));
_clone = function () {
return data;
};
return data;
}
var _constants = require("./constants");
var _loadPlugins = _interopRequireDefault(require("./loadPlugins"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2 years ago
const MODULE_BY_NAME_RE = /\.module\./;
async function configHydrator(configFile, config, resolveFrom, options) {
2 years ago
// Use a basic, modules-only PostCSS config if the file opts in by a name
// like foo.module.css
if (configFile == null && config.searchPath.match(MODULE_BY_NAME_RE)) {
configFile = {
plugins: {
'postcss-modules': {}
}
};
resolveFrom = __filename;
}
if (configFile == null) {
return;
} // Load the custom config...
let modulesConfig;
let configFilePlugins = (0, _clone().default)(configFile.plugins);
if (configFilePlugins != null && typeof configFilePlugins === 'object' && configFilePlugins['postcss-modules'] != null) {
modulesConfig = configFilePlugins['postcss-modules'];
delete configFilePlugins['postcss-modules'];
}
if (!modulesConfig && configFile.modules) {
modulesConfig = {};
}
let plugins = await (0, _loadPlugins.default)(configFilePlugins, (0, _nullthrows().default)(resolveFrom), options); // contents is either:
// from JSON: { plugins: { 'postcss-foo': { ...opts } } }
// from JS (v8): { plugins: [ { postcssPlugin: 'postcss-foo', ...visitor callback functions } ]
// from JS (v7): { plugins: [ [Function: ...] ]
let pluginArray = Array.isArray(configFilePlugins) ? configFilePlugins : Object.keys(configFilePlugins);
for (let p of pluginArray) {
if (typeof p === 'string') {
config.addDevDependency({
specifier: p,
resolveFrom: (0, _nullthrows().default)(resolveFrom)
});
}
}
return {
raw: configFile,
hydrated: {
plugins,
from: config.searchPath,
to: config.searchPath,
modules: modulesConfig
}
};
}
async function load({
config,
options,
logger
}) {
let configFile = await config.getConfig(['.postcssrc', '.postcssrc.json', '.postcssrc.js', 'postcss.config.js'], {
packageKey: 'postcss'
});
let contents = null;
if (configFile) {
config.addDevDependency({
specifier: 'postcss',
resolveFrom: config.searchPath,
range: _constants.POSTCSS_RANGE
});
contents = configFile.contents;
let isDynamic = configFile && _path().default.extname(configFile.filePath) === '.js';
if (isDynamic) {
// We have to invalidate on startup in case the config is non-deterministic,
// e.g. using unknown environment variables, reading from the filesystem, etc.
logger.warn({
message: 'WARNING: Using a JavaScript PostCSS config file means losing out on caching features of Parcel. Use a .postcssrc(.json) file whenever possible.'
});
config.invalidateOnStartup(); // Also add the config as a dev dependency so we attempt to reload in watch mode.
config.addDevDependency({
specifier: (0, _utils().relativePath)(_path().default.dirname(config.searchPath), configFile.filePath),
resolveFrom: config.searchPath
});
}
if (typeof contents !== 'object') {
throw new Error('PostCSS config should be an object.');
}
if (contents.plugins == null || typeof contents.plugins !== 'object' || Object.keys(contents.plugins).length === 0) {
throw new Error('PostCSS config must have plugins');
}
}
return configHydrator(contents, config, configFile === null || configFile === void 0 ? void 0 : configFile.filePath, options);
}