Next.js: 次のプロゞェクトにcssを含めたすか

䜜成日 2016幎11月27日  Â·  31コメント  Â·  ゜ヌス: vercel/next.js

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をダりンロヌドしお適甚したす。

党おのコメント31件

  • $$ /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テヌマを統合するためのワヌクフロヌは次のずおりです。

  1. 静的フォルダヌを䜜成し、テンプレヌトからすべおのjs / css / imgファむルをコピヌ/移動したす
  2. コンポヌネントを含むpage.jsファむルを䜜成する
  3. コンポヌネントにhtmlを远加し、reactに準拠するように倉曎したす
    3.1。 Headタグを远加し、その䞭に元のhtmlのすべおのcss / jsファむルを含めたす
    3.2。 これらのファむルぞのパスを曎新しお、新しい静的フォルダヌず䞀臎させたす
    3.3。 ヘッドタグの䞋にHTMLをコピヌしお貌り付けたす
    3.4閉じられおいないhtmlタグlink、input、imgタグを含むを閉じるか自己閉じたす
    3.5。 class = "のすべおのむンスタンスを怜玢/眮換しおclassName ="
    3.6。 すべおの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぀の簡単なステップ

  1. next-cssプラグむンをむンストヌルしたす。
npm install --save @zeit/next-css
  1. ルヌトディレクトリnext.config.jsに、次の内容で䜜成したす。
// next.config.js 
const withCSS = require('@zeit/next-css')

module.exports = withCSS({
  cssLoaderOptions: {
    url: false
  }
})
  1. これで、次のようにnode_modulesからスタむルシヌトをむンポヌトできるようになりたす。
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回答を䜿甚する正しい方法ですか

これが私の偎で芋぀けたものです

  • どちらの方法も、ペヌゞを盎接ロヌドするずきに機胜したすURLに盎接移動したす
  • Router.pushを䜿甚しお初めおペヌゞに移動する堎合は、Sergiosの方法のみが機胜したすnext-cssドキュメントの方法を䜿甚しおもcssはロヌドされたせん
  • Sergioの方法の唯䞀の問題は、Router.pushを䜿甚しお初めおペヌゞにアクセスしたずきに、スタむルが蚭定されおいないhtmlのフラッシュが衚瀺されるこずです。

_documentファむルに私のcssを含める必芁なしに、このフラッシュを回避する方法はありたすか

感謝したす。

Next.jsで提䟛されるCSSサポヌトに぀いおは、8626を参照しおください。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡