Модули PostCss и next.js
Я использую PostCSS http://cssnext.io/ с моим сайтом Next.js в сочетании с butterCMS. Я новичок в postcss, но мне нравится то, что они пытаются сделать, хотя и исходя из опыта SASS, я обнаружил, что кажется, что он идет по кроличьей норе необходимости добавлять множество дополнительных модулей и скриптов, чтобы заставить его работать что не дает ему большого преимущества перед препроцессорами.
В моем package.json у меня есть следующие модули:
"postcss-cssnext": "^3.0.2",
"postcss-easy-import": "^3.0.0",
"postcss-loader": "^2.0.6",
"postcss-modules": "^0.8.0",
В моем корне у меня есть ./styles/
папка со следующими файлами:
defaults.css
:root {
/* Breakpoints */
@custom-media --small (width >= 576px);
@custom-media --medium (width >= 768px);
@custom-media --large (width >= 1200px);
/* Colors */
--color-black: #000;
--color-white: #fff;
--color-vue-green: #42b983;
/* Typography */
--h1: 2rem;
--h2: 1.5rem;
--h3: 1.25rem;
--h4: 1rem;
--h5: 0.875rem;
--h6: 0.75rem;
/* Utilities */
--accessibly-hidden: {
position: absolute !important;
display: block;
visibility: visible;
overflow: hidden;
width: 1px;
height: 1px;
margin: -1px;
border: 0;
padding: 0;
clip: rect(0, 0, 0, 0);
clip-path: polygon(0 0, 0 0, 0 0, 0 0);
}
--foo: {
font-size:4em;
color:green;}
}
styles.css
@import 'defaults.css';
h1, h2, h3, h4, h5, h6 {
font-weight: normal;
}
h1 { font-size: var(--h1) }
h2 { font-size: var(--h2) }
h3 { font-size: var(--h3) }
h4 { font-size: var(--h4) }
h5 { font-size: var(--h5) }
h6 { font-size: var(--h6) }
.accessibly-hidden {
@apply --accessibly-hidden;
}
.giantext{
@apply --foo;
}
div {
color: var(--color-vue-green);
}
.my-paragraph{
composes: my-paragraph from 'shared.css';
}
.danger{
composes: danger from 'shared.css';
}
В моем сценарии реакции у меня есть:
<p className={classNames['my-paragraph']}>My homepage</p>
<p className={classNames.danger}> This background should be yellow</p>
<div>
<p className={classNames.giantext}> I am huge </p>
</div>
Только composes
Директивы работают с оставшимися утилитами и стилем, который не обнаруживается моим файлом index.js в next.js. Остальная часть дает мне следующие предупреждения / ошибки:
(Emitted value instead of an instance of Error) postcss-custom-properties: /Users/user/projects/qubase/styles/styles.css:25:3: variable '--color-vue-green' is undefined and used without a fallback
Или же
(Emitted value instead of an instance of Error) postcss-apply: /Users/user/projects/qubase/styles.css:16:3: No custom property set declared for `accessibly-hidden`.
так далее
Есть что-нибудь о postcss, который я пропускаю?
1 ответ
Вот что я сделал, чтобы избавиться от этих сообщений:
я добавил postcss.config.js
файл и я добавил следующий код:
const postcssCssNext = require('postcss-cssnext')
const postcssImport = require('postcss-import')
module.exports = {
plugins: [
postcssCssNext({
features: {
customProperties: {
warnings: false
}
}
}),
postcssImport
]
}