From 26105034da4fcce7ac883c899d781f016559310d Mon Sep 17 00:00:00 2001 From: ruki Date: Thu, 8 Nov 2018 00:38:48 +0800 Subject: switch to vuepress --- node_modules/postcss-load-config/src/index.js | 92 +++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 node_modules/postcss-load-config/src/index.js (limited to 'node_modules/postcss-load-config/src/index.js') diff --git a/node_modules/postcss-load-config/src/index.js b/node_modules/postcss-load-config/src/index.js new file mode 100644 index 00000000..d613729f --- /dev/null +++ b/node_modules/postcss-load-config/src/index.js @@ -0,0 +1,92 @@ +'use strict' + +const resolve = require('path').resolve + +const config = require('cosmiconfig') + +const loadOptions = require('./options.js') +const loadPlugins = require('./plugins.js') + +/** + * Load Config + * + * @method rc + * + * @param {Object} ctx Config Context + * @param {String} path Config Path + * @param {Object} options Config Options + * + * @return {Promise} config PostCSS Config + */ +const rc = (ctx, path, options) => { + /** + * @type {Object} + * + * @prop {String} cwd=process.cwd() Config search start location + * @prop {String} env=process.env.NODE_ENV Config Enviroment, will be set to `development` by `postcss-load-config` if `process.env.NODE_ENV` is `undefined` + */ + ctx = Object.assign({ + cwd: process.cwd(), + env: process.env.NODE_ENV + }, ctx) + /** + * @type {String} `process.cwd()` + * + */ + path = path ? resolve(path) : process.cwd() + + /** + * @type {Object} + * + * @prop {Boolean} rcExtensions=true + */ + options = Object.assign({ + rcExtensions: true + }, options) + + if (!ctx.env) { + process.env.NODE_ENV = 'development' + } + + return config('postcss', options) + .load(path) + .then((result) => { + if (!result) { + throw new Error(`No PostCSS Config found in: ${path}`) + } + + let file = result.filepath || '' + let config = result.config || {} + + if (typeof config === 'function') { + config = config(ctx) + } else { + config = Object.assign({}, config, ctx) + } + + if (!config.plugins) { + config.plugins = [] + } + + return { + plugins: loadPlugins(config, file), + options: loadOptions(config, file), + file: file + } + }) +} + +/** + * Autoload Config for PostCSS + * + * @author Michael Ciniawsky @michael-ciniawsky + * @license MIT + * + * @module postcss-load-config + * @version 2.0.0 + * + * @requires comsiconfig + * @requires ./options + * @requires ./plugins + */ +module.exports = rc -- cgit v1.2.3