[!IMPORTANT]
This starter is not constantly maintained and is out of sync with the latest EUI release. The lack of SSR support also currently makes Next.js a challenge with EUI. We plan to enhance our support for Next.js and re-evaulate this project at that time. You can follow along with that initiative with this issue in the EUI repository.
Jump right in to building prototypes with EUI.
Install yarn
This starter expects to use yarn to manage dependencies, so go install it.
Copy the Next.js starter
Clone the repository:
git clone https://github.com/elastic/next-eui-starter.git my-eui-starter
Start developing.
Navigate into your new siteβs directory and start it up.
cd my-eui-starter/
# Install depdendencies.
yarn
# Optional: start a new git project
rm -rf .git && git init && git add . && git commit -m "Initial commit"
# Start the dev server
yarn dev
Open the source code and start editing!
Your site is now running at http://localhost:3000
!
Open the my-eui-starter
directory in your code editor of choice and edit src/pages/index.tsx
. Save your changes and the browser will update in real time!
Deploy your site to GitHub Pages
When you're ready to deploy and share your site to GitHub Pages, you can use the provided yarn build-docs
script to do so. The first time you do this, you need to do some preparation:
pathPrefix
option in next.config.js
to reflect the name of your GitHub repo. The starter kit will try to derive this itself, so you're unlikely to see to do anything here.git branch gh-pages
Then whenever you want to update your site:
yarn build-docs
master
and gh-pages
branches by pushing them to GitHub: git push origin master gh-pages
gh-pages
branch is used for serving the site. (You only need to do this once, but you have to push the branch before you can change this setting)A quick look at the top-level files and directories you'll see in this project.
.
βββ .eslintrc.js
βββ .gitignore
βββ .next/
βββ .prettierrc
βββ LICENSE
βββ README.md
βββ next.config.js
βββ node_modules/
βββ package.json
βββ public/
βββ src/
βββ tsconfig.json
βββ yarn.lock
.eslintrc.js
: This file configures ESLint, which will check the code for potential problems and style issues. It also integrates with Prettier for formatting.
.gitignore
: This file tells git which files it should not track / not maintain a version history for.
.next
: The next
command line tool uses this for various purposes. You should never need to touch it, but you can delete it without causing any problems.
.prettierrc
: This is a configuration file for Prettier. Prettier is a tool to help keep the formatting of your code consistent.
LICENSE
: Next.js is licensed under the MIT license.
README.md
: A text file containing useful reference information about your project.
next.config.js
: This file customizes the Next.js build process so that it can work with EUI.
node_modules/
: This directory contains all of the modules of code that your project depends on (npm packages) are automatically installed.
package.json
: A manifest file for Node.js projects, which includes things like metadata (the projectβs name, author, etc). This manifest is how npm knows which packages to install for your project.
public/
: Files that will never change can be put here. This starter project automatically puts EUI theme files here during the build
src/
: This directory will contain all of the code related to what you will see on the front-end of your site (what you see in the browser) such as your site header or a page template. src
is a convention for βsource codeβ.
tsconfig.json
: This file configures the TypeScript compiler
yarn.lock
(See package.json
below, first). This is an automatically generated file based on the exact versions of your npm dependencies that were installed for your project. (You wonβt change this file directly, but you need to commit any changes to git).
Looking for more guidance? Full documentation for Next.js lives on the website. You probably want to being by following the Getting Started Guide.
yarn analyze
and two windows will open in your browser, showing how big your server and client bundles are, and where that data is coming from. You can use this information to work out where you're sending too much data to the client, and speed up your pages.