diff --git a/packages/cli/src/config/rollup.config.js b/packages/cli/src/config/rollup.config.js index 388acf14d..6d1e386cd 100644 --- a/packages/cli/src/config/rollup.config.js +++ b/packages/cli/src/config/rollup.config.js @@ -124,19 +124,7 @@ function greenwoodHtmlPlugin(compilation) { return Promise.all(Object.keys(mappedStyles).map(async (assetKey) => { const asset = mappedStyles[assetKey]; const filePath = path.join(userWorkspace, asset.name); - const userPostcssConfig = fs.existsSync(path.join(process.cwd(), 'postcss.config.js')) - ? require(path.join(process.cwd(), 'postcss.config')) - : {}; - const userPostcssPlugins = userPostcssConfig.plugins - ? userPostcssConfig.plugins - : []; - - const allPostcssPlugins = [ - ...userPostcssPlugins, - ...postcssConfig.plugins - ]; - - const result = await postcss(allPostcssPlugins) + const result = await postcss(postcssConfig.plugins) .use(postcssImport()) .process(asset.source, { from: filePath }); diff --git a/packages/cli/src/lifecycles/context.js b/packages/cli/src/lifecycles/context.js index d02f189c3..98d3065cd 100644 --- a/packages/cli/src/lifecycles/context.js +++ b/packages/cli/src/lifecycles/context.js @@ -68,6 +68,7 @@ module.exports = initContexts = async({ config }) => { // ? path.join(process.cwd(), './', postcssConfig) // : path.join(defaultConfigDir, postcssConfig) // }; + const projectDirectory = process.cwd(); const userWorkspace = path.join(config.workspace); const pagesDir = path.join(userWorkspace, 'pages/'); const userTemplatesDir = path.join(userWorkspace, 'templates/'); @@ -78,7 +79,8 @@ module.exports = initContexts = async({ config }) => { userWorkspace, pagesDir, userTemplatesDir, - scratchDir + scratchDir, + projectDirectory }; if (!fs.existsSync(scratchDir)) { diff --git a/packages/cli/src/transforms/transform.css.js b/packages/cli/src/transforms/transform.css.js index 4cd34a5af..8430d65b7 100644 --- a/packages/cli/src/transforms/transform.css.js +++ b/packages/cli/src/transforms/transform.css.js @@ -1,5 +1,6 @@ +const fs = require('fs'); const path = require('path'); -const { promises: fsp } = require('fs'); +const postcss = require('postcss'); const TransformInterface = require('./transform.interface'); class CSSTransform extends TransformInterface { @@ -18,9 +19,22 @@ class CSSTransform extends TransformInterface { ? path.join(process.cwd(), url) : path.join(this.workspace, url); - const css = await fsp.readFile(cssPath, 'utf-8'); + let css = await fs.promises.readFile(cssPath, 'utf-8'); let body = '', contentType = ''; + // TODO try and use context.projectDirectory + if (fs.existsSync(path.join(process.cwd(), 'postcss.config.js'))) { + const userPostcssConfig = require(`${process.cwd()}/postcss.config`); + const userPostcssPlugins = userPostcssConfig.plugins || []; + + if (userPostcssPlugins.length > 0) { + const result = await postcss(userPostcssPlugins) + .process(css, { from: cssPath }); + + css = result.css; + } + } + //