ΠΠΌΠΏΠΎΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΡΠΈΠ»Π΅ΠΉ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ΄Π°Π΅Ρ Ρ ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ:
Global CSS cannot be imported from files other than your Custom <App>. Please move all global CSS imports to pages/_app.tsx.
Read more: https://err.sh/next.js/css-global
Π₯ΠΎΡΡ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΎΡΠΊΡΠ΄Π° ΡΡΠΎ Π²Π·ΡΠ»ΠΎΡΡ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. ΠΡΠ»ΠΈ Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΌΠ½Π΅ ΡΠ°ΠΊΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ CSS. ΠΠΎΠ³ΡΡ Π±ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ²ΠΎΠΈ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ, Π½ΠΎ ΡΡΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΠΌΠ½Π΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅. CSS, ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΠΈ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Β«Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌΒ».
import "my-library/index.css"
yarn dev
Π€Π°ΠΉΠ» ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ.
Π― Π²ΠΈΠΆΡ ΡΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ:
next.config.js
ΠΠ± ΡΡΠΎΠΌ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ ΡΠ°Π½Π΅Π΅.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΡΠΈΠ»Π΅ΠΉ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΈΡΠΎΠ΄Π΅ ΡΠ²Π»ΡΡΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌΠΈ, ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. ΠΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΈΠΌΠ΅Π½ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π΄Π»Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΡΡΠΈΠ»Π΅ΠΉ.
Π― Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ Ρ ΡΡΠΈΠΌ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ, ΠΌΠΎΡΠΈΠ²ΠΈΡΡΡ ΡΡΠΎ ΡΠ΅ΠΌ, ΡΡΠΎ Π²Π½Π΅ΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ CSS ΠΈ ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ ΠΈΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ°ΠΉΠ»Π° CSS Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ°. Π§ΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠΉ ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ² .
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΡΡΡΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΠΈΠΌΠΏΠΎΡΡ Π² _app
ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ.
ΠΡΠΎΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΠΎ ΠΎΡΠ²Π΅ΡΠ° Π½Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Π»ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΡΡΡΠ°. ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π²ΡΠ·Π²Π°Π» ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΎΡΠ·ΡΠ²ΠΎΠ², ΡΠ°ΠΊ ΡΡΠΎ Ρ ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.
ΠΠ°ΠΆΠ΅ΡΡΡ, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ.
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½ΠΎ, Π½ΠΎ Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½.
Π― ΠΏΠΈΡΡ Π΄Π»ΠΈΠ½Π½ΡΠ΅ ΡΡΠ°ΡΡΠΈ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ
ΡΠ°Π±ΠΎΡ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ
ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΉ. Π ΡΡΠ°ΡΡΡΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ°ΡΡΠ½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ npm Ρ ΡΠ΅Π°Π³ΠΈΡΡΡΡΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΡΡΡ SVG Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ CSS. ΠΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ CSS ΠΈ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΡΡ index.js
ΠΈ index.css
. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
ΡΠ°ΠΉΠ»ΠΎΠ² CSS Π² _app
Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΡ Π²ΡΠ΅Π³ΠΎ CSS, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π»ΡΠ΄ΠΈ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π½Π° Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅, Π² ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅ ΠΈΠ»ΠΈ Π² Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ°ΡΡΠ΅, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π½Π° 100% Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ. ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΡ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π°Π±ΠΎΡΠΈΠ»Π°ΡΡ ΠΎ Π²Π°ΡΠΈΡ
ΡΡΡΠ°Π½ΠΈΡΠ°Ρ
, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΈΠΌΠΏΠΎΡΡΡ CSS Π² _app
.
Π― ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΏΡΠΎΡΡΠΎ ΠΏΡΡΠ°ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Linaria, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΊΠ»Π°ΡΡΠΎΠ². Π₯ΠΎΡΡ ΡΠ°ΠΉΠ»Ρ css, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ ΡΠΎΠ·Π΄Π°Π΅Ρ, Π½Π΅ ΠΎΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ Π½Π° .module.css
, ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ Β«ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈΒ». ΠΠ½Π΅ Π½ΡΠΆΠ΅Π½ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ.
ΠΏΠΎΡΠ΅ΠΌΡ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠ»ΠΈ Π½Π° nextjs ΡΠ½ΠΎΠ²Π°?
Π― ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ GlobalCSS Π²Π½Π΅ node_modules. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π²Π½Π΅Π΄ΡΡΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ CSS.
Π΄Π° ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ! ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ npm Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ nextjs, Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ CRA ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌΠΈ
ΠΠ»Ρ Π²ΡΠ΅Ρ
, ΠΊΡΠΎ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ js dart sass Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ
Π²Π΅ΡΠ΅ΠΉ, ΠΊΠ°ΠΊ @use
support ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ sass, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ -Π»ΡΠ±ΠΎΠΉ- Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ node, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ node-sass, ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ node-sass Π²ΠΌΠ΅ΡΡΠΎ sass. ΠΠΎΠΊΠ°Π»ΡΠ½ΠΎ Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΠ» ΡΡΠΎ, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
// example next.config.js
module.exports = {
webpack(config, options) {
config.module.rules.forEach(rule => {
if (rule.oneOf) {
const nestedScss = rule.oneOf.find((one) => {
return one.test
&& 'some.scss'.match(one.test)
&& one.issuer
&& one.issuer.include
&& one.issuer.include.includes('_app');
});
if (nestedScss) {
const sassLoader = nestedScss.use.find(u => u.loader.includes('sass-loader'));
// Set implementation to sass instead of node-sass here.
sassLoader.options.implementation = require('sass');
}
}
})
}
}
ΠΠ°ΡΠ΅ΠΌ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π°ΡΠΈ scss-ΡΠ°ΠΉΠ»Ρ Π² _app.js
.
@smurrayatwork, ΡΡΠΎ Π²Π·Π»ΠΎΠΌ, Π° Π½Π΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΠ·Π²ΠΈΠ½ΠΈΡΠ΅
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ _app.js Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ.
ΠΡΠ»ΠΈ ΠΌΡ Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΡΠ»ΠΊΠΈ CSS ΠΏΠΎΠ²ΡΡΠ΄Ρ, ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π½Π° CSS ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΡΡΠ»Π°ΡΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΡΡΠΌΡΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ _app
(Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π½ΠΈΠ³Π΄Π΅ Π½Π΅Ρ ΡΡΡΠ»ΠΎΠΊ)?
Ρ.Π΅. ΠΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ _app
(ΠΈ Π½ΠΈΠ³Π΄Π΅ Π±ΠΎΠ»ΡΡΠ΅), ΡΡΠΎ Π΄Π°Π΅Ρ CSS Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΠΈΠΌΠΏΠΎΡΡΠ΅.
ΠΡΠΎ Π½Π΅ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΠΎΠ΄Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ Π±Π°Π·Π°, ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡΡ ΠΎΠ±ΡΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΠΎΠ±ΡΠΈΠΉ CSS. Π― Π±Ρ Π½Π΅ Ρ ΠΎΡΠ΅Π» Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΎΠ±ΡΠΈΠΉ ΠΈΠΌΠΏΠΎΡΡ CSS Π² _app.js Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΠΎ, ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΡΡΠ΄Π»ΠΈΠ²ΡΡ ΠΌΠ΅ΡΠ°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΉ js, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ css Π² Π΄ΡΡΠ³ΠΈΡ ΠΌΠΎΠ΄ΡΠ»ΡΡ .
ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΉ Π½ΡΠ½Π΅ΡΠ½ΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π», Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Β«Π€Π°Π±ΡΠΈΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉΒ», ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ Π²Π΅ΡΡ ΠΎΠ±ΡΠΈΠΉ CSS. ΠΠ°ΡΠ΅ΠΌ _app ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ°Π±ΡΠΈΠΊΡ ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ CSS ΠΏΠΎΠ²Π΅ΡΡ ΠΎΠ±ΡΠΈΡ .
Π― Π΄ΠΎΠ±Π°Π²Π»ΡΡ https://github.com/vercel/next.js/discussions/13991, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.
+100 ΠΊ ΡΡΠΎΠΌΡ. ΠΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π²ΡΡΠ°Π²ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ css ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ·Π»Π° Π² ΠΌΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ Π½ΠΈΠΌ .module.css
ΠΠΎΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ.
Π ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°ΠΊΠ΅ΡΠ° pdf-viewer-reactjs
Π΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΡΠ΅Π±ΡΡΡ CSS, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ· _app.js
.
ΠΡΠΎ ΡΠ°Π·Π΄ΡΠ²Π°Π½ΠΈΠ΅ CSS Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½ Π² ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°Ρ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅.
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ 'response-quill / dist / quill.snow.css';
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ 'response-image-crop / dist / ReactCrop.css';
import '../../node_modules/material-design-icons/iconfont/material-icons.css';
import '../../node_modules/bulma/css/bulma.css';
import '../../node_modules/bulma-helpers/css/bulma-helpers.min.css';
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ - ./node_modules/material-design-icons/iconfont/material-icons.css
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ CSS Π½Π΅Π»ΡΠ·Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ· node_modules.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅: https://err.sh/next.js/css-npm
Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: node_modules / pdf-viewer-reactjs / dist / pdf-viewer-reactjs.js
./node_modules/bulma/css/bulma.css
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ CSS Π½Π΅Π»ΡΠ·Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ· node_modules.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅: https://err.sh/next.js/css-npm
Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: node_modules / pdf-viewer-reactjs / dist / pdf-viewer-reactjs.js
./node_modules/bulma-helpers/css/bulma-helpers.min.css
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ CSS Π½Π΅Π»ΡΠ·Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ· node_modules.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅: https://err.sh/next.js/css-npm
Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: node_modules / pdf-viewer-reactjs / dist / pdf-viewer-reactjs.js
./node_modules/material-design-icons/iconfont/material-icons.css
ΠΡΠΈΠ±ΠΊΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ: ΠΎΡΠΈΠ±ΠΊΠ°: ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ (./node_modules/next/dist/build/webpack/loaders/error-loader.js) Π½Π΅ Π²Π΅ΡΠ½ΡΠ» Π±ΡΡΠ΅Ρ ΠΈΠ»ΠΈ ΡΡΡΠΎΠΊΡ
./node_modules/bulma/css/bulma.css
ΠΡΠΈΠ±ΠΊΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ: ΠΎΡΠΈΠ±ΠΊΠ°: ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ (./node_modules/next/dist/build/webpack/loaders/error-loader.js) Π½Π΅ Π²Π΅ΡΠ½ΡΠ» Π±ΡΡΠ΅Ρ ΠΈΠ»ΠΈ ΡΡΡΠΎΠΊΡ./node_modules/bulma-helpers/css/bulma-helpers.min.css
ΠΡΠΈΠ±ΠΊΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ: ΠΎΡΠΈΠ±ΠΊΠ°: ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ (./node_modules/next/dist/build/webpack/loaders/error-loader.js) Π½Π΅ Π²Π΅ΡΠ½ΡΠ» Π±ΡΡΠ΅Ρ ΠΈΠ»ΠΈ ΡΡΡΠΎΠΊΡ
ΠΡΠΈΠ²Π΅Ρ ! Π£ ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΡΡΠΎ ΡΠ΅ΡΠ°Π»ΠΎΡΡ ΠΈ ΠΊΠ°ΠΊ? Π’Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ·Π»ΠΎΠ²ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ
ΡΡΠΈΠ»Π΅ΠΉ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ
ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ next.config.js
, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ ΡΡΠΎΠ΄Π»ΠΈΠ²ΠΎΠ΅ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ
ΡΡΠΈΠ»ΡΡ
, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ΠΎΠΏΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ Π»ΡΡΡΠΈΡ
ΠΏΡΠ°ΠΊΡΠΈΠΊ / ΠΌΠ½Π΅Π½ΠΈΠΉ NextJS.
ΠΠΎ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΡΡΠΈΡ Ρ CRA> NextJS. ΠΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠΎΡ Π΄Π»Ρ Π½Π°Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π²Π½Π΅Π΄ΡΡΡΡ ΡΠ°ΠΊΠΈΠ΅ Π²Π΅ΡΠΈ, ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡΠ»ΠΈ CSS.
ΠΡΠ΅ Π΅ΡΠ΅ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΠΎ. ΠΠ»Ρ ΡΠ²ΠΎΠΈΡ Π½ΡΠΆΠ΄ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ CSS, Π½ΠΎ ΡΡΠΎ ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ CSS, Π½ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ Π»ΡΡΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ»ΡΡΠ°Π΅Π². ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π½ΠΈΠΆΠ΅ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π°Π²ΡΠΎΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Π½Π΅ ΡΠ°Π·Π±Π΅ΡΡΡΡΡ Ρ ΡΡΠΈΠΌ.
next.config.js
const withCSS = require('@zeit/next-css');
const withPlugins = require('next-compose-plugins');
...
module.exports = withPlugins([
...
withCSS,
]);
@abdelrahmantoptal 's ΠΡ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π»Ρ SASS?
ΠΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π»Ρ CSS, Π½ΠΎ Π²ΡΠ΄Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ΅ SASS:
error - ./src/components/layouts/Footer.scss 1:0
Module parse failed: Unexpected character '@' (1:0)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
> <strong i="8">@import</strong> 'styles/vars';
|
| footer {
ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ SASS Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ webpack ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ»Π°Π³ΠΈΠ½Π° withCSS:
config.module.rules.push({
test: /\.s[ac]ss$/i,
use: [
// Creates `style` nodes from JS strings
'style-loader',
// Translates CSS into CommonJS
'css-loader',
// Compiles Sass to CSS
'sass-loader'
]
});
ΠΠΎ ΡΡΠΎ Π²ΡΠ·Π²Π°Π»ΠΎ:
error - ./src/components/App.scss
ReferenceError: self is not defined
Π― ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ @zeit/next-sass
, Π½ΠΎ ΡΡΠΎ Π²ΡΠ·Π²Π°Π»ΠΎ ΡΡ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΡ:
error - ./src/components/App.scss
ReferenceError: self is not defined
ΠΡΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ SASS?
ΠΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» https://github.com/balena-io-modules/rendition ?
Π― ΠΎΡΠΊΠ°Π·Π°Π»ΡΡ ΠΎΡ Gatsby, Π° Π²ΡΠΊΠΎΡΠ΅ ΠΈ ΠΎΡ Next.js ΠΈΠ·-Π·Π° ΠΈΡ
Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ
, Π½ΠΎ ΠΎΡΠ΅Π½Ρ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΡ
, ΡΠ°ΠΌΠΎΡΠ²Π΅ΡΠ΅Π½Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΡΡΠ°. Π‘Π΅ΠΉΡΠ°Ρ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ CodeBlock
Π΄Π»Ρ CKEditor 5, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ. ΠΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±Π²Π΅ΡΡΠΈ ΡΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
ΠΡΠ»ΠΎ Π±Ρ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π½ΠΎΠ²ΠΎΡΡΠΈ ΠΎΠ± ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ ΠΎΡ @Timer ΠΈΠ»ΠΈ ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΠΈΠ·
Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠΉ! ΠΠ΅Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΎ ΠΈΠΌΠ΅ΡΡ CSS Π² ΠΌΠΎΠ΄ΡΠ»ΡΡ ΡΠ·Π»ΠΎΠ². ΠΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ, ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΡΡΠΊΡΡΡΠΈΡΡΡΡ ΡΠ²ΠΎΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΠ·Π»ΠΎΠ², ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π½Π΅ ΠΎΠΆΠΈΠ΄Π°ΡΡ, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ css Π² ΠΌΠΎΠ΄ΡΠ»Π΅ ΡΠ·Π»Π° Π½Π°ΡΡΡΠΈΡ ΡΠ°Π±ΠΎΡΡ Π²Π΅Π±-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°.
@OssiPesonen Π²Ρ ΡΡΠΎ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ? ΠΡΠΎΡ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ Π½Π΅ ΠΈΠ΄Π΅Π°Π»Π΅Π½, Π½ΠΎ ΡΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΠ½ ΡΠ΅ΡΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ.
@OssiPesonen Π²Ρ ΡΡΠΎ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ? ΠΡΠΎΡ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ Π½Π΅ ΠΈΠ΄Π΅Π°Π»Π΅Π½, Π½ΠΎ ΡΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΠ½ ΡΠ΅ΡΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ.
ΠΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ? ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΡΡΠ½ΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ CSS ΠΈΠ· ΡΠ·Π»ΠΎΠ²ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠ°ΠΊΠ΅ΡΡ npm ΡΠ°ΠΌΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡΡ CSS. ΠΠ°ΠΊΠ΅Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠ°ΠΊΡΡ ββΡΡΡΠΎΠΊΡ:
import '../theme/stylesheet.css'
ΠΠ°ΡΡΠ°Π²ΠΈΡ next.js Π²ΡΠ»Π΅ΡΠ΅ΡΡ Ρ ΡΠ΄Π²ΠΎΠ΅Π½Π½ΠΎΠΉ ΡΠΈΠ»ΠΎΠΉ. Π, Π²ΠΈΠ΄ΠΈΠΌΠΎ, ΡΠΎΠ²Π΅Ρ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠ΅Π³ΠΎ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠ΅ΠΌΡ ΠΈ ΠΏΠΎΠΏΡΠΎΡΠΈΡΠ΅ Π΅Π³ΠΎ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΡΠ²ΠΎΠ΅ΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ.
Π ΠΊΠ°ΠΊΠΎΠΉ ΡΡΡΠ°Π½Π΅ ΡΠ°Π½ΡΠ°Π·ΠΈΠΉ ΠΆΠΈΠ²ΡΡ Π»ΡΠ΄ΠΈ, Π³Π΄Π΅, ΠΏΠΎ ΠΈΡ ΠΌΠ½Π΅Π½ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠ²ΡΠ·Π°ΡΡΡΡ Ρ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠΌΠΈ ΠΈ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π²Π°Ρ ΠΏΠ°ΠΊΠ΅Ρ Π² ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎΠΌ ΡΠ΅ΠΌΠΏΠ΅? ΠΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅ΡΠ°ΡΡ ΠΊΠΎΠΌΡ-Π½ΠΈΠ±ΡΠ΄Ρ Π½Π΅Π΄Π΅Π»ΡΠΌΠΈ! ΠΡΠΎΡ Π±ΠΈΠ»Π΅Ρ ΠΎΡΠΊΡΡΡ ΡΠΆΠ΅ 4 ΠΌΠ΅ΡΡΡΠ°. ΠΡΠΎ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Π½Π°Π΄ Π±ΡΡΡΡΠΎ ΠΌΠ΅Π½ΡΡΡΠΈΠΌΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ.
ΠΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΈΠΌΠΏΠΎΡΡ CSS ΠΈΠ· node_modules
Π² Π»ΡΠ±ΠΎΠΉ ΡΠ°ΠΉΠ» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π½Π΅Π΄Π΅Π»ΠΈ (Π½Π° ΠΊΠ°Π½Π°ΡΠ΅ΠΉΠΊΠ΅)! ΠΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΠΌ Π·Π΄Π΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π³ΠΎΡΠΎΠ² ΠΊ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠ»ΠΈ ΠΊΠΎΠΌΡ-ΡΠΎ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎ Π²ΡΠΏΡΡΠΊΠ°, Ρ ΡΠΌΠΎΠ³ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ next-transpile-modules Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ· node_modules
ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π» CSS. Π‘ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΠΊΠ°ΠΊ ΡΠ°ΡΠΌ.
@BrandonE ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ next-transpile-modules Π²ΡΠ΅ Π΅ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ *.module.css
. ΠΡ Π½Π°ΡΠ»ΠΈ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΠΎ?
@rjoaopereira ΠΠ΅ ΠΌΠΎΠ³Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΡΠ΅ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΠΌΠΎΠΈΡ
node_modules
, ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
CSS, ΡΠ°Π±ΠΎΡΠ°Π»Π° ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ @zeit/next-css
. Π’ΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π½Π΅ ΡΠ΄Π΅Π»Π°Π», ΠΈ Π² ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠ°Π½ΡΠΏΠΈΠ»ΡΡΠΈΡ ΡΡΡΡΠ°Π½ΠΈΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΈΠ·ΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΈ Ρ Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ Π±ΡΠ΄ΡΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ Next.js ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π½Π°ΠΌ ΡΡΠ°ΡΠΈΡΡ ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° Π°Π»Ρ
ΠΈΠΌΠΈΡ Babel / Webpack ΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π£ ΠΌΠ΅Π½Ρ ΡΡΠΎ ΠΏΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ.
ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ 9.5.3
ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ°Π½ΡΠΏΠ°ΠΉΠ»-ΠΌΠΎΠ΄ΡΠ»ΠΈ 4.1.0
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ Ρ ΡΠΌΠΎΡΠΈΡΠΌΠΈ.
Π‘ΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Ρ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ css ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ css
scopedcomponents
ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌΠΈ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ.
//next.config.js
const withCustomWebpack = require("./webpack-custom.config");
const withNextCSSOverride = require("./next.config.css");
const withTM = require("next-transpile-modules")(["@scopedcomponents"]);
module.exports = withCustomWebpack(
withTM(
withNextCSSOverride({
poweredByHeader: false
})
)
);
///next.config.css.js
const {
getCssModuleLocalIdent
} = require("next/dist/build/webpack/config/blocks/css/loaders/getCssModuleLocalIdent");
const path = require("path");
/**
* Stolen from https://stackoverflow.com/questions/10776600/testing-for-equality-of-regular-expressions
*/
const regexEqual = (x, y) => {
return (
x instanceof RegExp &&
y instanceof RegExp &&
x.source === y.source &&
x.global === y.global &&
x.ignoreCase === y.ignoreCase &&
x.multiline === y.multiline
);
};
module.exports = (nextConfig = {}) => {
return Object.assign({}, nextConfig, {
webpack(config, options) {
const nextCssLoaders = config.module.rules.find(
rule => typeof rule.oneOf === "object"
);
if (nextCssLoaders) {
const nextCssLoader = nextCssLoaders.oneOf.find(
rule =>
rule.sideEffects === false &&
regexEqual(rule.test, /\.module\.css$/)
);
if (nextCssLoader) {
/***********************************************************
* change the rule to match all scopedcomponents css files
***********************************************************/
nextCssLoader.test = /(@scopedcomponents|react\-virtualized)\/.*\.css$/;
const cssLoader = nextCssLoader.use.find(({ loader }) =>
loader.includes("css-loader")
);
if (cssLoader) {
/***********************************************************
* Override the default behaviour for CSS modules discovery
* auto = true makes webpack search for *.module.css
* https://webpack.js.org/loaders/css-loader/#auto
***********************************************************/
cssLoader.options.modules.auto = /@scopedcomponents\/.*\.css$/;
/***********************************************************
* Nextjs overrides the default mode to "Pure"
* https://github.com/vercel/next.js/blob/v9.5.2/packages/next/build/webpack/config/blocks/css/loaders/modules.ts#L35
* Put it back to normal
***********************************************************/
cssLoader.options.modules.mode = "local";
/***********************************************************************************************************************
* There is a problem when using components built with css-modules with Nextjs. *
* NextJS will consume code from `lib` on the server side and from `es` on the client. *
* https://github.com/vercel/next.js/blob/v9.5.2/packages/next/build/webpack-config.ts#L374 *
* This raises a problem when generating the classes for different environments, *
* throwing an error of className mismatch due to the hash created being based on the file path *
* https://github.com/vercel/next.js/blob/v9.5.2/packages/next/build/webpack/config/blocks/css/loaders/modules.ts#L26 *
* https://github.com/webpack/loader-utils/blob/v1.4.0/lib/interpolateName.js#L39 *
* To solve this, when generating the classNames for 3rd party components, *
* we need to tell cssloader to always use the same path * *
* *
* https://github.com/zeit/next-plugins/issues/595 *
***********************************************************************************************************************/
cssLoader.options.modules.getLocalIdent = (
context,
localIdentName,
localName,
options
) => {
const newContext = { ...context };
if (newContext.resourcePath.includes("@scopedcomponents")) {
newContext.resourcePath = newContext.resourcePath.replace(
`${path.sep}es${path.sep}`,
`${path.sep}lib${path.sep}`
);
}
return getCssModuleLocalIdent(
newContext,
localIdentName,
localName,
options
);
};
}
}
}
if (typeof nextConfig.webpack === "function") {
return nextConfig.webpack(config, options);
}
return config;
}
});
};
ΠΡΠΎΠ±Π»Π΅ΠΌΡ:
@Timer Π΅ΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎ ΡΡΠΎΠΌΡ
ΠΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΈΠΌΠΏΠΎΡΡ CSS ΠΈΠ·
node_modules
Π² Π»ΡΠ±ΠΎΠΉ ΡΠ°ΠΉΠ» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π½Π΅Π΄Π΅Π»ΠΈ (Π½Π° ΠΊΠ°Π½Π°ΡΠ΅ΠΉΠΊΠ΅)! ΠΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΠΌ Π·Π΄Π΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π³ΠΎΡΠΎΠ² ΠΊ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠ΄Π΅Ρ Π»ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠΌΠΏΠΎΡΡ CSS ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°?
ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ @Timer
next@^9.5.4-canary.10
ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ CSS ΠΈΠ· node_modules
Π»ΡΠ±ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎ ΡΠ»ΡΡΡΠ°Π΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ React, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΡΡ, ΡΡΠΎΠ±Ρ Π²Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΈΡ
CSS, Π½ΠΎ Π½Π΅ Ρ
ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π» ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
@Timer ΠΠ΅ ΠΌΠΎΠ³Ρ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΠ΅Π»ΠΈΠ·Π°, ΠΎΡΠ΅Π½Ρ ΡΠ΅Π½Ρ Π²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ π― β€οΈ
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ @Timer !
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π» ΡΡΠΎ ΡΠ΅Π³ΠΎΠ΄Π½Ρ, Π²ΡΠ΅ Π΅ΡΠ΅ Π²ΠΈΠ΄Π΅Π» ΡΠΎ ΠΆΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΡΡΡ Π»ΠΈ ΡΡΠΎ-ΡΠΎ Π±ΠΎΠ»ΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ 9.5.4-canary-10? ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡΠΎΠ½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ @rmwc
@johmike ΠΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ??
import "@rmwc/avatar/avatar.css";
ΠΡ ΠΏΡΡΠ°Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΠ²Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ next
?
@Timer ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ. ΠΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° ΡΠ°ΠΉΠ»Π° CSS ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ node_modules
.
import 'prism-themes/themes/prism-darcula.css';
ΠΡΡΡ Π»ΠΈ ΠΏΠ»Π°Π½Ρ ΠΏΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ ΠΈΠΌΠΏΠΎΡΡΠ° Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ CSS Π²Π½Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ node_modules
?
@sasivarnan
ΠΡΠΎ ΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ @rmwc . ΠΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ @require("@rmwc/avatar/avatar.css")
. Π― ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡ import {Avatar} from "library/Avatar"
ΠΈ ΡΡΠΎ Π½Π΅ ΡΠ΄Π°Π΅ΡΡΡ.
@sasivarnan
ΠΡΠΎ ΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ @rmwc . ΠΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ
@require("@rmwc/avatar/avatar.css")
. Π― ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡimport {Avatar} from "library/Avatar"
ΠΈ ΡΡΠΎ Π½Π΅ ΡΠ΄Π°Π΅ΡΡΡ.
ΠΠΎΠ½ΡΡΠ½ΠΎ. Π― Π΄ΡΠΌΠ°Π», ΡΡΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΏΡΡΠΌΠΎ Π² Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠΈΠ½ΠΎΠ²Π°Ρ.
Π‘ΡΠ΄Ρ ΠΏΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ Π·Π΄Π΅ΡΡ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ Π½Π΅ ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΠ»ΠΈ Π±ΡΠ»ΠΎ ΡΠ΅ΡΠ΅Π½ΠΎ, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ Π·Π΄Π΅ΡΡ ΡΠΎΠΎΠ±ΡΠ°ΡΡ ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅. ΠΠ½ΠΎΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ Π΄ΠΎ ΡΠΈΡ
ΠΏΠΎΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡΡ CSS ΠΈΠ· ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° (Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ import style.css
Π²Π½ΡΡΡΠΈ ΡΠ°ΠΉΠ»Π° ΠΏΠ°ΠΊΠ΅ΡΠ°).
ΠΠ°ΠΆΠ΅ΡΡΡ, ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ CSS ΠΈΠ· ΠΏΡΡΠΈ node_modules/
, Π½ΠΎ Π΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΠΎ: ΠΏΡΠΎΡΡΠΎ ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ CSS Π² ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½. ΠΡΠΎ Π½Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΡΠΎΠ²Π½Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΡΠΈΠΊΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ Π½Π΅ ΡΠ΅ΡΠΈΠ»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠΌ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Π²Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΈΠΌΠΏΠΎΡΡΠ°, Π² ΡΠ°ΠΉΠ» CSS, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°ΠΌ ΠΏΠ°ΠΊΠ΅Ρ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ»Π΅ΡΠ°Π΅Ρ.
@sasivarnan @OssiPesonen , ΠΏΠΎΡ ΠΎΠΆΠ΅, Π²Ρ ΠΎΠ±Π° Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅ ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅, ΡΠ΅ΠΌ ΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»Π°ΡΡ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»ΡΠ»Π°ΡΡ Π² ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ OP.
ΠΡΠΎ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΈΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΡΡ, ΡΡΠΎΠ±Ρ Π²Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΈΡ CSS Π² ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
// components/MySlider.tsx
import { Slider } from "@reach/slider";
import "@reach/slider/styles.css";
function Example() {
return <Slider min={0} max={200} step={10} />;
}
Π’ΠΎ, ΠΎ ΡΠ΅ΠΌ Π²Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅, - ΡΡΠΎ Π΄ΡΠ±Π»ΠΈΠΊΠ°Ρ # 706 ΠΈ # 13282, ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ node_modules
ΠΊΠ°ΠΊ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄.
@Timer Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π» ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΈ ΠΎΠ½ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ.
ΠΠΎΠ³Π΄Π° Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡ CSS Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΡ, ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ, Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡ ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΡ, ΠΏΠΎΡΡΡΠΎΡ ΠΈ Π·Π°ΡΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²Π»Ρ ΡΡΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ, ΠΎΠ½ Π½Π΅ Π²Π΅ΡΠ½Π΅ΡΡΡ ΠΊ ΡΠΎΠΉ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΠ΅, ΡΡΠΎ ΠΈ ΡΠ°Π½ΡΡΠ΅.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ-ΡΠΎ Π΅ΡΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Avatar
Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡ Button
ΠΈ Π²ΡΠ΅ ΠΆΠ΅ Avatar
- ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ° ΡΠ±ΠΎΡ.
Π’Π°ΠΊΠΆΠ΅ Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ» next-transpile-modules
ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π² ΠΌΠΎΠ½ΠΎΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, Π½ΠΎ ΡΡΠΎ, ΠΏΠΎΡ
ΠΎΠΆΠ΅, Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ Π² ΡΡΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅.
Π― ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΠΊΠΎΠΏΠ°Π²ΡΠ΅Π³ΠΎΡΡ Π² ΠΊΡΡΡ Π΄ΡΡΠ³ΠΈΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΎΠΊΠΎΠ»ΠΎ next-transpile-modules
.
const withCSS = require("@zeit/next-css");
module.exports = withCSS();
require.extensions[".css"] = () => {
return;
};
Π― ΡΠ΄Π°Π»ΠΈΠ» next-transpile-modules
ΠΈ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠΎΠ½ΡΡΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠ΅ΠΌΡ, ΠΏΠΎΡ
ΠΎΠΆΠ΅, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ?
Π― Π·Π°Π³ΠΎΠ²ΠΎΡΠΈΠ» ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ°Π½ΠΎ! Π₯ΠΎΡΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ next dev
, next build
Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ unknown token .
(ΡΠΎΡΠΊΠ°) ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ² CSS.
@Timer ΠΡΡΡ ΠΌΡΡΠ»ΠΈ? ΠΠΎΠ»ΠΆΠ½ΠΎ Π»ΠΈ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ Ρ ΠΌΠΎΠ½ΠΎΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅ΠΌ ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ? ΠΠ»ΠΈ ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎ-ΡΠΎ Π΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ, ΡΡΠΎΠ±Ρ @ team / packageA ΠΌΠΎΠ³Π»Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ css ΠΈΠ· node_modules, Π° Π·Π°ΡΠ΅ΠΌ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² @ team / packageB?
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ https://github.com/vercel/next.js/issues/13282 Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ [email protected], ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ css Π² Π»ΡΠ±ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎ Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ² scss? Π― Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΡΠ°ΠΉΠ»Ρ scss, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ .
// ΡΡΡΠ°Π½ΠΈΡΡ / _app.tsx
import '../styles/common.scss'
// pages / index.tsx Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ
import '@mynpm/custom-ui/_Button.scss'
// pages / about.tsx Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ°ΡΡΡΠ΅Π»Ρ
import '@mynpm/custom-ui/_Carousel.scss'
ΠΡΠΈΠΌΠ΅Ρ Π½Π° https://nextjs.org/docs/basic-features/built-in-css-support
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ:
ΠΎΡΠΈΠ±ΠΊΠ° - /Users/gp/dev/next-kolumbus/node_modules/@reach/dialog/styles.css
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ CSS Π½Π΅Π»ΡΠ·Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ· node_modules.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅: https://err.sh/next.js/css-npm
ΠΡΠΈΠΌΠ΅Ρ Π½Π° https://nextjs.org/docs/basic-features/built-in-css-support
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ:
ΠΎΡΠΈΠ±ΠΊΠ° - /Users/gp/dev/next-kolumbus/node_modules/@reach/dialog/styles.css
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ CSS Π½Π΅Π»ΡΠ·Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ· node_modules.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅: https://err.sh/next.js/css-npm
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ Next.js.
ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅, Ρ Π½Π΅ ΡΠΊΠ°Π·Π°Π» ΡΡΠΎ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π²Π΅ΡΡΠΈΡ 9.5.5. ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΡΡ Ρ npm.
Π― ΠΎΡΠΈΡΡΠΈΠ» Π²Π΅ΡΡ ΠΊΠ΅Ρ .next, ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΡΠΈΠ±ΠΊΠ° Π²ΡΠ΅ Π΅ΡΠ΅ Π΅ΡΡΡ Π²Π΅ΡΡΠΈΡ 9.5.5 , Π² _app
-> import "react-gauge-chart-nextjs-support/dist/GaugeChart/style.css";
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΈΠΌΠΏΠΎΡΡ CSS ΠΈΠ·
node_modules
Π² Π»ΡΠ±ΠΎΠΉ ΡΠ°ΠΉΠ» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π½Π΅Π΄Π΅Π»ΠΈ (Π½Π° ΠΊΠ°Π½Π°ΡΠ΅ΠΉΠΊΠ΅)! ΠΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΠΌ Π·Π΄Π΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π³ΠΎΡΠΎΠ² ΠΊ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.