NextãGlamourãšcss-in-jsã䜿çšããŠããããšãç§ã¯ç¥ã£ãŠããŸãã ãããã次ã®ãããžã§ã¯ãã§å®éã®css / less / scssã䜿çšããæ¹æ³ã¯ãããŸãã...ã©ããããããïŒ å°ãªããšããããžã§ã¯ããããŒãã¹ãã©ããããããã«ïŒ
ç§ã®æšè«ã¯ããã§ã-Nextã察象ãšããŠãããããªåçŽãªãµã€ãã®å Žåããªã³ã©ã€ã³ã§è³Œå ¥ã§ããã»ãšãã©ã®æ¢æã®htmlããŒãã¯ãçŽç²ãªhtmlãšcssã䜿çšããŠäœæãããŠããŸãã ãããã£ãŠãå¿ èŠãªã®ã¯HTMLãreactã³ã³ããŒãã³ãã«åå²ããé©åãªããŒãžãã©ã«ããŒã«é 眮ããããšã ãã§ããããã§å®äºã§ãã
ç§ã¯èªåã®ãããžã§ã¯ãã«Nextã䜿çšããããšæã£ãŠããŸãããæ¢è£œã®cssãã©ãã«ãããŠæŽ»çšã§ããªãå Žåã¯ãããã¯ç§ã«ãšã£ãŠå€§ããªåé¡ã«ãªããŸãã ãã®ãŠãŒã¹ã±ãŒã¹ã®è§£æ±ºçãŸãã¯åé¿çã¯ãããŸããïŒ
/pages
/static
ãã©ã«ããŒãäœæããŸãã.css
ãã¡ã€ã«ã眮ããŸãHead
ãã€ã³ããŒããã <link />
ãCSSã«è¿œå ããŸããimport React from 'react';
import Head from 'next/head';
export default () => (
<div>
<Head>
<title>My styled page</title>
<link href="/static/styles.css" rel="stylesheet" />
</Head>
<p className="some-class-name">
Hello world!
</p>
</div>
)
ããã§ãNext.jsã¯ããŒãžã®å é ã«ãªã³ã¯ã¿ã°ãã¬ã³ããªã³ã°ããå¿ èŠãããããã©ãŠã¶ã¯CSSãããŠã³ããŒãããŠé©çšããŸãã
ãããŒãè¿ éãªè¿ä¿¡ããããšãããããŸã:)ã ã§ããŸãïŒ ãã£ã1ã€ã®é害ããããŸã-æåã«ããŒãžãããŒããããšãããã¹ãŠãæ£ããã¬ã³ããªã³ã°ãããçŽåã«ãã¹ã¿ã€ã«ãèšå®ãããŠããªãhtmlã®ãã©ãã·ã¥ããããŸãã ãããåå¿åŸã«ããŒããããcssãŸãã¯jsãã¡ã€ã«ããã®ãã®ãã©ããã¯ããããŸããã ããã«å¯Ÿããåé¿çã¯ãããŸããïŒ
ãšã«ãããç§ã¯ããªããã¡ããã£ãŠããä»äºã«çµ¶å¯Ÿã«æéãåããŸããããããŠè¿ éãªè¿äºãããããšãïŒ
æ°ã«ããªãã§ãã ãããã€ã³ããã¯ã¹ããŒãžã«ãcssãªã³ã¯ãšjsãªã³ã¯ãå«ãããããŒã³ã³ããŒãã³ããã€ã³ããŒãããŸãããããã©ãã·ã¥ã¯ãªããªããŸããã ããã«ãã¢ã³ã«ãŒã¿ã°ããªã³ã¯ã³ã³ããŒãã³ãã«å€æŽãããšãæ®ãã®ãžã£ã³ããåé€ãããŸãã æ¬ ç¹ã¯ãLinkã³ã³ããŒãã³ãããã®åããhtmlã¿ã°ïŒã¢ã€ã³ã³ã¯ã©ã¹ãæã€ã¹ãã³ã¿ã°ãªã©ïŒãåé€ããããã«èŠãããããããã¹ãã®ã¿ãæ®ãããšã§ãã
ç§ã¯ãã®ãŠãŒã¹ã±ãŒã¹ãæ£ããæé©åããããã®ã®å察ã§ããããšãç¥ã£ãŠããŸãããç§ãã¡ãè¿ éã§æ±ã...éãã«é Œããªããã°ãªããªãå Žåã«æ¬åœã«åœ¹ç«ã¡ãŸã:)
ãããã£ãŠãäºåã«äœæãããhtmlããŒããçµ±åããããã®ã¯ãŒã¯ãããŒã¯æ¬¡ã®ãšããã§ãã
@manolkalinovç°¡åã«åç §ã§ããããã«ãã³ãŒããè¿œå ããŠããã ããŸããïŒ ããªããã¯ãŒã¯ãããŒãæžããããšã¯ç¥ã£ãŠããŸããããµã³ãã«ã³ãŒãã䜿çšãããšãåé¡ãçºçããå Žåã®è¿œè·¡ãšãããã°ã容æã«ãªããŸãã
ãããã¿ã°ã«CSSãè¿œå ããããšã¯ç¢ºãã«æ©èœããŸãã ããããããã¯äžçš®ã®ããããŒã§ããã postcss
ãsass
ã®ãããªãã®ã䜿çšãããå Žåã¯ã©ããªããŸããïŒ æ¢åã®cssã¹ã¿ã€ã«ãã°ã©ããŒJSONãªããžã§ã¯ãã«å€æããã«ã¯ã©ãããã°ããã§ããïŒ ãŸãããã¶ã€ããŒãglamor
ã䜿çšããŠããŒãžã®ã¹ã¿ã€ã«ãèšå®ããããšãéåžžã«å°é£ã§ãã ãããè¡ãããã®ããè¯ãæ¹æ³ãããã«éããããŸããã
ã¡ãªã¿ã«ãCSSã¢ãžã¥ãŒã«ãšæ¯èŒãããšã glamor
ã䜿çšããã¡ãªããã¯äœã§ããïŒ
@andyhuã¯ã glamor
ã䜿çšããå©ç¹ã«ã€ããŠã httpsïŒ //github.com/zeit/next.js#faqããèªã¿ãã ããã
postcss
ãŸãã¯sass
ã«ã€ããŠã¯ãwebpackæ§æãã«ã¹ã¿ãã€ãºãããšããããã䜿çšã§ããããã«ãªããŸãïŒhttps://github.com/zeit/next.js/pull/222ïŒã next
ãå®è¡ããåã«ããããã®ãã¡ã€ã«ãcssã«ã³ã³ãã€ã«ããŸãã
解決ãããšæããŸãã ããã§ãåé¡ã解決ããªãå Žåã¯ããæ°è»œã«åéããŠãã ããã åçããããšãããããŸã@sergiodxa ïŒ
@nkzawaç§ã¯customizingwebpack configã䜿çšããŠããã®ã§ããããžã§ã¯ãã§äœ¿çšããéãæžããããšãã§ããŸãããããç§ã®ã³ãŒãã§ã
next.config.js
/* eslint-disable */
export default {
webpack: (webpackConfig) => {
const newConfig = { ...webpackConfig };
newConfig.module.preloaders.push({
test: /\.less$/,
loader:'style-loader!css-loader!less-loader'
});
return newConfig;
},
cdn: false
}
次ã«ãããå°ãªããã¡ã€ã«import './index.less'
ãå¿
èŠã§ããããšã©ãŒãçºçããŸã
You may need an appropriate loader to handle this file type.
SyntaxError: Unexpected token (1:4)
less
ã less-loader
ã css-loader
ã style-loader
ãã€ã³ã¹ããŒã«ãããšæããŸããããããããé¡ãããŸãã
è©ŠããŠã¿ãŠãã ãã
config.module.rules.push({
test: /\.less$/,
use: [
'style-loader',
{ loader: 'css-loader', options: { importLoaders: 1 } },
'less-loader'
]
})
@kimownããå°ãªããã¡ã€ã«ã®ã€ã³ããŒãã«æåããŸãããïŒ ãããããªããããªãã¯ãããã©ã®ããã«ããããå ±æããŠããã ããŸãããïŒ
@sergiodxa node_modulesããcssãã€ã³ããŒãããã«ã¯ã©ãããã°ããã§ããïŒ
npmããã±ãŒãžããCSSãã€ã³ããŒãããããšã«é¢ããŠç§èªèº«ããã®è³ªåãããŸããã
äŸïŒrc-slider
import 'rc-slider/assets/index.css'
ããã«å¯Ÿããçãã¯ãããŸãããïŒ @notrab
@notrab
ãããè©ŠããŠ
ã«ãŒããŸãã¯_documentã³ã³ããŒãã³ãå
import stylesheet from 'rc-slider/assets/index.css';
<div className='root'>
<style dangerouslySetInnerHTML={{ __html: stylesheet }} />
<Main />
</div>
@saadbinsaeedç§ã¯ãããè©ŠããŸããã ç¬èªã®ã³ã³ããŒãã³ããšããŒãžã§æ©èœããŸãã ãã ããã€ã³ã©ã€ã³ã§ã¯ãªããwebpackã«ãã³ãã«ããããšæããŸãã
@schoenwaldnilsç§ã¯ããããããšããŸããããã§ããŸããã§ããã ç§ã®ç解ã«ãããšããµãŒããŒåŽã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠããããããµãŒããŒãcssãèªèããŠããªããããåå¥ã®cssãã¡ã€ã«ããã³ãã«ããŠã¯ã©ã€ã¢ã³ãã«éä¿¡ããããšã¯ã§ããŸããã cssãhtmlã«åã蟌ãå¿ èŠããããŸãã ã¢ããªã±ãŒã·ã§ã³å šäœã§ã¢ã¯ã»ã¹ããã«ã¯ãäžèšã®@sergiodxaã«ç€ºãããã«ãã«ãŒãã³ã³ããŒãã³ãã«åã蟌ãããããããŒã«ãªã³ã¯ããŸãã
@sergiodxaã¢ãããŒããè©ŠããŸããããããŸããããŸããã ããã¯ãNextã®ææ°ããŒãžã§ã³ã«ãåŒãç¶ãé©çšã§ããŸããïŒ
@sergiodxaã®ãããã æ¢ããŠãããšããã§ãã
@sergiodxaçããå€ããå¿ èŠããããŸãã éååŠã§ã¯ãããŸããïŒ éçã§ããå¿ èŠããããŸã
CSSã€ã³ããŒãã®äœ¿çšã¯ã httpsïŒ//github.com/zeit/next-pluginsã䜿çšããã ãã§ç°¡åã«ãªããŸãã
1幎åã®åé¡ã®ãã³ãã§ããããªããã ã©ãããã人ã ã¯ã°ãŒã°ã«ãéããŠããã«è¡ãçããŸãã
CSSã€ã³ããŒãã®äœ¿çšã¯ã httpsïŒ//github.com/zeit/next-pluginsã䜿çšããã ãã§ç°¡åã«ãªããŸãã
1幎åã®åé¡ã®ãã³ãã§ããããªããã ã©ãããã人ã ã¯ã°ãŒã°ã«ãéããŠããã«è¡ãçããŸãã
ããŸãã node_moduleããçŽæ¥cssãã€ã³ããŒãããç°¡åãªæ¹æ³ãèŠã€ããããšãã§ããªãããã§ãã ããã¯ä»æ§ã«ãããã®ã§ããïŒ
CSSã€ã³ããŒãã®äœ¿çšã¯ã httpsïŒ//github.com/zeit/next-pluginsã䜿çšããã ãã§ç°¡åã«ãªããŸãã
1幎åã®åé¡ã®ãã³ãã§ããããªããã ã©ãããã人ã ã¯ã°ãŒã°ã«ãéããŠããã«è¡ãçããŸããããŸãã node_moduleããçŽæ¥cssãã€ã³ããŒãããç°¡åãªæ¹æ³ãèŠã€ããããšãã§ããªãããã§ãã ããã¯ä»æ§ã«ãããã®ã§ããïŒ
次ã®ããŒãžã§ã³7以éã§ã¯ãããŸãããããã§ã«ã芧ã«ãªã£ãŠããŸããïŒ ä»¥åãããããã«ç°¡åã«ãªããŸãã;ïŒ
@mtrabelsiã¯ãNext.js 7ã®ããŒãã¢ãžã¥ãŒã«ããcssãçŽæ¥ã€ã³ããŒãããæ¹æ³ã®äŸãããã€ãæããŠããã ããŸããïŒ ããŒãã¢ãžã¥ãŒã«ããããã€ãã®ã¹ã¿ã€ã«ãã€ã³ããŒãããå¿ èŠããããŸãããããŸããã解決çãèŠã€ãããŸããã
copy-webpack-pluginã䜿çšããŠãã®åé¡ãä¿®æ£ããŸããã
webpack configïŒnext.config.jsïŒã®å ŽåïŒ
config.plugins.push(
new CopyWebpackPlugin([
{
from: path.join(__dirname,'node_modules/react-datepicker/dist/react-datepicker.css'),
to: path.join(__dirname, 'static/react-datepicker.css')
}
])
);
ã¯ã©ã€ã¢ã³ãåŽã®cssä¿®æ£ã®ä¿®æ£ããã§ãã¯ã¢ãŠãã§ããŸãhttps://github.com/AmanAgarwal041/next-css-fix
ç§ã¯ãããè¡ãããã®ããç°¡åãªæ¹æ³ããããšæããŸãïŒ
3ã€ã®ç°¡åãªã¹ãããïŒ
npm install --save @zeit/next-css
// next.config.js
const withCSS = require('@zeit/next-css')
module.exports = withCSS({
cssLoaderOptions: {
url: false
}
})
import 'bootstrap-css-only/css/bootstrap.min.css';
_泚ïŒNext v 8 + _ã䜿çšãã
ããã¯ã°ã©ãŠã³ãïŒ
node_moduleãšããŠã€ã³ã¹ããŒã«ãããCSSãåçŽã«ã€ã³ããŒãããããšæ°æéè²»ãããŸãããããŸããŸãªè§£æ±ºçã¯ã»ãšãã©ããããŒãªåé¿çã§ãããäžèšã®ããã«ãç°¡åãªè§£æ±ºçããããŸãã
ã³ã¢ããŒã ã¡ã³ããŒã®1人ã«ãã£ãŠæäŸãããŸããïŒ https ïŒ//spectrum.chat/next-js/general/ignoring-folders-files-specifically-fonts~4f68cfd5-d576-46b8-adc8-86e9d7ea0b1f
誰ãã@sergiodxaã®çãã䜿çšããŠããå Žåããã©ã«ãstatic
ãšããååãä»ãããšããªã³ã¯ã¿ã°ã¯static
ãåç
§ããå¿
èŠããããŸãã
ð人ã ã¯å ¬åŒããã¥ã¡ã³ãïŒhttps://github.com/zeit/next-plugins/tree/master/packages/next-cssïŒãããGitHubã®åé¡ãèªãã§ããããã§ãð
@mtrabelsi ããã®åé¡ã¯ããã¥ã¡ã³ãimoããã䟡å€ããããŸããcssãçŽæ¥äœ¿çšããå Žåãããšãã°import 'bootstrap-css-only/css/bootstrap.min.css';
ã®å Žåã @ Vrqã®åçãèŠã€ãããŸã§ãããã¥ã¡ã³ãã«ã¯äœãèšèŒãããŠããŸããã
@timneutkens
èªåã®éåžžã®cssãã¡ã€ã«ãã€ã³ããŒãããããšããŠããŸãã æåŸã«ã httpsïŒ//github.com/zeit/next-plugins/tree/master/packages/next-cssã®ããã¥ã¡ã³ãã䜿çšããŠã€ã³ããŒãããæ£ããæ¹æ³ã§ãã
ãŸãã¯ã <Head>
ã¿ã°ã®ãªã³ã¯ãä»ããŠã€ã³ããŒããã2017幎ã®@sergiodxaåçã䜿çšããæ£ããæ¹æ³ã§ããïŒ
ãããç§ã®åŽã§èŠã€ãããã®ã§ãïŒ
_documentãã¡ã€ã«ã«ç§ã®cssãå«ããå¿ èŠãªãã«ããã®ãã©ãã·ã¥ãåé¿ããæ¹æ³ã¯ãããŸããïŒ
æè¬ããŸãã
Next.jsã§æäŸãããCSSãµããŒãã«ã€ããŠã¯ãïŒ8626ãåç §ããŠãã ããã
æãåèã«ãªãã³ã¡ã³ã
/pages
/static
ãã©ã«ããŒãäœæããŸãã.css
ãã¡ã€ã«ã眮ããŸãHead
ãã€ã³ããŒããã<link />
ãCSSã«è¿œå ããŸããããã§ãNext.jsã¯ããŒãžã®å é ã«ãªã³ã¯ã¿ã°ãã¬ã³ããªã³ã°ããå¿ èŠãããããã©ãŠã¶ã¯CSSãããŠã³ããŒãããŠé©çšããŸãã