Initial commit
[yaffs-website] / node_modules / postcss-load-plugins / index.js
1 // ------------------------------------
2 // # POSTCSS - LOAD PLUGINS - INDEX
3 // ------------------------------------
4
5 'use strict'
6
7 var resolve = require('path').resolve
8
9 var config = require('cosmiconfig')
10 var assign = require('object-assign')
11
12 var loadPlugins = require('./lib/plugins')
13
14 /**
15  * Autoload Plugins for PostCSS
16  *
17  * @author Michael Ciniawsky (@michael-ciniawsky) <michael.ciniawsky@gmail.com>
18  * @license MIT
19  *
20  * @module postcss-load-plugins
21  * @version 2.3.0
22  *
23  * @requires cosmiconfig
24  * @requires object-assign
25  * @requires ./lib/plugins.js
26  *
27  * @method pluginsrc
28  *
29  * @param  {Object} ctx Context
30  * @param  {String} path Directory
31  * @param  {Object} options Options
32  *
33  * @return {Array} config PostCSS Plugins
34  */
35 module.exports = function pluginsrc (ctx, path, options) {
36   ctx = assign({ cwd: process.cwd(), env: process.env.NODE_ENV }, ctx)
37
38   path = path ? resolve(path) : process.cwd()
39
40   options = assign({ rcExtensions: true }, options)
41
42   if (!ctx.env) process.env.NODE_ENV = 'development'
43
44   var file
45
46   return config('postcss', options)
47     .load(path)
48     .then(function (result) {
49       if (!result) throw new Error('No PostCSS Config found in: ' + path)
50
51       file = result ? result.filepath : ''
52
53       return result ? result.config : {}
54     })
55     .then(function (plugins) {
56       if (typeof plugins === 'function') plugins = plugins(ctx)
57       else plugins = assign(plugins, ctx)
58
59       if (!plugins.plugins) plugins.plugins = []
60
61       return { plugins: loadPlugins(plugins), file: file }
62     })
63 }