1 // ------------------------------------
2 // #POSTCSS - LOAD OPTIONS
3 // ------------------------------------
7 var resolve = require('path').resolve
9 var config = require('cosmiconfig')
10 var assign = require('object-assign')
12 var loadOptions = require('./lib/options')
15 * @author Michael Ciniawsky (@michael-ciniawsky) <michael.ciniawsky@gmail.com>
16 * @description Autoload Options for PostCSS
19 * @module postcss-load-options
22 * @requires cosmiconfig
23 * @requires object-assign
24 * @requires lib/options
28 * @param {Object} ctx Context
29 * @param {String} path Directory
30 * @param {Object} options Options
31 * @return {Object} options PostCSS Options
33 module.exports = function optionsrc (ctx, path, options) {
34 ctx = assign({ cwd: process.cwd(), env: process.env.NODE_ENV }, ctx)
36 path = path ? resolve(path) : process.cwd()
38 options = assign({ rcExtensions: true }, options)
40 if (!ctx.env) process.env.NODE_ENV = 'development'
44 return config('postcss', options)
46 .then(function (result) {
47 if (!result) console.log('PostCSS Options could not be loaded')
49 file = result ? result.filepath : ''
51 return result ? result.config : {}
53 .then(function (options) {
54 if (typeof options === 'function') options = options(ctx)
56 if (typeof options === 'object') options = assign(options, ctx)
60 .then(function (options) {
61 return { options: loadOptions(options), file: file }