3.0.0-beta.15
https://github.com/zhangbobell/vue-cli-lerna-reproduce
git clone https://github.com/zhangbobell/vue-cli-lerna-reproduce.git
cd vue-cli-lerna-reproduce
yarn
cd packages/sample && yarn serve
runs well
broken since postcss error
Module build failed: Error: No PostCSS Config found in: /Users/myName/Sites/demos/temp/vue-cli-lerna-reproduce/node_modules/el
ement-ui/lib/theme-chalk
lerna
to manage monorepo include a repo create by vue-cli
element-ui
, import it js and csspostcss-loader
has expose a options called path
to specify the path of config file, but vue-cli-service
only pass in sourceMap
optionvue.config.js
to override the config but failed, since it's not allowed, main because it's a internal configpostcss-load-config
does not provide path options, cannot use the solution posted in the docs.postcssrc.js
in lerna root dir or add postcss
section to root package.json will solve this, but I think it's not a elegant solutionSo, would you please provide a elegant solution about this problem ?
Thanks very much !
We will make postcss-loader
's option configurable in vue.config.js
.
I have met same issue before with a monorepo project. Actually It's because yarn workspace is using different mechanism to resolve dependencies rather than lerna + npm. Yarn will hoist all your dependencies to your project root.
If you try to use lerna with npm client in your provided repo, you will find it works fine.
Good news is, yarn workspace support a nohoist
mode since v1.4.2 ( see https://yarnpkg.com/blog/2018/02/15/nohoist/ for more details), you just need to change your package.json
to:
{
"private": true,
"devDependencies": {
"lerna": "^2.11.0"
},
"workspaces": {
"packages": ["packages/*"],
"nohoist": ["**/element-ui"]
}
}
@yyx990803 @jkzing thank you both, I'll try nohoist
option in root package.json temporarily to solve this problem, and look forward the next release! 馃槃
closed via 0ba111e
@zhangbobell, how did you utilize the new vue.config.js
functionality to solve your problem? Setting css.loaderOptions.postcss
to {}
did not get rid of the "No PostCSS Config found" error, but putting postcss: {}
in the monorepo's root package.json
file did work.
Same as @benlind, trying to set this code in vue.config.js
:
module.exports = {
css: {
loaderOptions: {
postcss: {
plugins: {
autoprefixer: {}
}
}
}
}
}
but doesn't work.
Thanks @benlind for the temporary solution in the root package.json
:)
closed via 0ba111e
@yyx990803, this solution doesn't work for me, only placing postcss: {}
in root's package.json file. I think this issue should be reopened.
This worked for me, but bear in mind that the config used in vue.config.js
is more like the raw webpack config so the example mentioned by @maximelebreton isn't correct. You need something more like
module.exports = {
css: {
loaderOptions: {
postcss: {
plugins: [
require('autoprefixer')()
]
}
}
}
};
@mattnathan I said that my example did not work ;)
@mattnathan I said that my example did not work ;)
Ha, of course. I was hoping to help out by changing the example into one that did work (for me at least) in case some future person stumbled across this issue/thread and didn't have the time to work out the correct way to do it... mostly because I expect that person will be me in a few months time!
I just ran into this as well. I use Workspaces, so eventually I figured out PostCSS is looking for a config file at the root workspace, where node_modules
actually lives. So pretty simple fix, just create a postcss.config.js
file that exports an empty object, like so:
// https://github.com/vuejs/vue-cli/issues/1462
// https://github.com/postcss/postcss/issues/1190
// https://github.com/postcss/postcss/issues/1205
module.exports = {}
I usually add links to related issues, to reason why this file is necessary. I should also mention I didn't have to go through this for a React based project that uses a similar CSS import (that raised this error), so I'm guessing it's something with how PostCSS is integrated into vue-cli-service
.
Most helpful comment
@zhangbobell, how did you utilize the new
vue.config.js
functionality to solve your problem? Settingcss.loaderOptions.postcss
to{}
did not get rid of the "No PostCSS Config found" error, but puttingpostcss: {}
in the monorepo's rootpackage.json
file did work.