TopGit theo dõi netlify/next-on-netlify trên GitHub trong nhóm Frontend, đã đạt 727 sao. Build and deploy Next.js applications with Server-Side Rendering on Netlify!
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
We are deprecating next-on-netlify in favor of Netlify's Essential Next.js Build Plugin. Please visit this issue to learn more about the deprecation of next-on-netlify and ask any questions. You can also visit our simple Migration doc for assistance migrating to the plugin.
Build Plugin @netlify/plugin-nextjs
Plugin npm package
next-on-netlify is a utility for enabling server-side rendering in Next.js on Netlify. It wraps your application in a tiny compatibility layer, so that pages can use Netlify Functions to be server-side rendered.
Table of Contents
Installation
Setup
1. Set Next.js target to serverless
2. Add postbuild hook
3. Configure for Netlify
(Optional) Configure private git submodules
Demo
Optional Extras
Preview Locally
Custom Netlify Redirects
Custom Netlify Functions
Background Functions
Using Netlify Identity
Caveats
Fallbacks for Pages with getStaticPaths
next/image
Credits
Showcase
Installation
npm install --save next-on-netlify
Setup
1. Set Next.js target to serverless
We must build our Next.js app as a serverless app. You can read more about serverless Next.js here.
It's super simple. Just create a next.config.js file in the root of your project and write the following:
// next.config.js
module.exports = {
// Target must be serverless
target: "serverless",
};
If binaries are needed in the deployment the following configuration is needed (Prisma is an example):
// next.config.js
module.exports = {
// Target must be experimental-serverless-trace
// Your build time will be longer with this option
target: "experimental-serverless-trace",
};
2. Add postbuild hook
The next-on-netlify package adds the next-on-netlify command. When we run this command, some magic happens to prepare our Next.js app for hosting on Netlify*.
We want the next-on-netlify command to run after we build our Next.js application. So let's add a postbuild hook to our package.json file. You should add "postbuild": "next-on-netlify" to the existing scripts, like so:
*If you're curious about the "magic", check out the well-documented next-on-netlify.js file.
3. Configure for Netlify
We're almost done! We just have to tell Netlify how to build our Next.js app, where the functions folder is located, and which folder to upload to its CDN. We do that with a netlify.toml file in the root of your project and the following instructions:
Note: out_functions and out_publish are hard-coded into next-on-netlify.
These are not configurable at the moment.
(Optional) Configure private git submodules
If your project contains private submodules, in order to deploy it, you will
need to:
Generate a Deploy
Key
in Netlify and add it to the relevant
submodules
so that they can be cloned during the deploy process.
Ensure the submodule remotes are set to SSH format (i.e.
[email protected]:owner/project.git, not https://...). Inside the submodule
directory, the git remote can be updated with:
If you're not familiar with Netlify, follow the deployment instructions here: https://www.netlify.com/blog/2020/11/30/how-to-deploy-next.js-sites-to-netlify/
I recommend you still use next dev to build and preview your application locally.
But if you want to emulate the Netlify deployment on your computer, you can also run next-on-netlify locally and then use netlify-cli to preview the result.
First, install the latest version of netlify-cli (you can also look at package.json to see the version that next-on-netlify has been tested against):
npm install -g netlify-cli
Then, add the following [dev] block to your netlify.toml:
# netlify.toml
# [build]
# ...
[dev]
functions = "out_functions"
publish = "out_publish"
# We manually set the framework to static, otherwise Netlify automatically
# detects Next.js and redirects do not work.
# Read more: https://github.com/netlify/cli/blob/master/docs/netlify-dev.md#project-detection
framework = "#static"
Lastly, add the following lines to your .gitignore:
# .gitignore
# Files generated by next-on-netlify command
/out_publish/
/out_functions/
Now you're all set.
From now on, whenever you want to preview your application locally, just run:
npx next-on-netlify watch: This will run next build to build your Next.js app and next-on-netlify to prepare your Next.js app for compatibility with Netlify. Any source code changes will trigger another build.
netlify dev: This will emulate Netlify on your computer and let you preview your app on http://localhost:8888.
Note:
Preview Mode is not yet available locally, running netlify dev, for static pages without revalidate or fallback. This will be supported soon.
For now, Preview Mode is supported in production for all Next.js page types.
Custom Netlify Redirects
You can define custom redirects in a _redirects and/or in your netlify.toml file.
The precedence of these rules are:
_redirects
next-on-netlify redirects
Currently, there is no support for redirects set in your netlify.toml file.
Read more about Netlify redirects here.
Custom Netlify Functions
next-on-netlify creates one Netlify Function for each of your
SSR pages and API endpoints. Currently, you can only create custom Netlify functions using @netlify/plugin-nextjs.
Background Functions
If your Next.js API page/route ends in -background, it will be treated as a Netlify background function.
Note: background functions are only available on certain plans.
Using Netlify Identity
You can use Netlify Identity with next-on-netlify. For all pages with server-side rendering (getInitialProps*, getServerSideProps, and API routes), you can access the clientContext object via the req parameter.
To access Netlify Identity from pages without server-side rendering, you can create a Next API route that performs identity-related logic:
export default async function getUser(req, res) {
// Get event and context from Netlify Function
const {
netlifyFunctionParams: { event, context },
} = req;
// Access Netlify identity
const { user } = context.clientContext;
// Respond with user object
res.json({ user });
}
* Note that pages using getInitialProps are only server-side rendered on initial page load and not when the user navigates client-side between pages.
Caveats
Fallbacks for Pages with getStaticPaths
Fallback pages behave differently with next-on-netlify than they do with Next.js. On Next.js, when navigating to a path that is not defined in getStaticPaths, it first displays the fallback page. Next.js then generates the HTML in the background and caches it for future requests.
With next-on-netlify, when navigating to a path that is not defined in getStaticPaths, it server-side renders the page and sends it directly to the user. The user never sees the fallback page. The page is not cached for future requests.
For more on this, see: Issue #7
next/image
Our existing solution for next/image is not very performant. We have performance improvements on our roadmap, dependent on internal work.
To get better performance now, we recommend using a cloud provider like Cloudinary (see the Next.js docs).
Credits
This package is maintained by Lindsay Levine, Finn Woelm, and Cassidy Williams.
📣 Shoutout to @mottox2 (a pioneer of hosting Next.js on Netlify) and @danielcondemarin (author of serverless-next.js for AWS). The two were big inspirations for this package.
🙌 Big "thank you" to the following people for their contributions, support, and beta testing:
@spencewood
@alxhghs
@gamliela
@wei
@laugharn
@rajington
@etrepum
@jonasbuntinx
@joostmeijles
Showcase
The following sites are built with next-on-netlify:
opinionatedreact.com (via Twitter)
missionbit.org (#18)
gemini.com
bigbinary.com
Create your own blog and deploy to Netlify!
Are you building something awesome with next-on-netlify? 🔥 Let us know and we will feature it here :)
netlify/next-on-netlify thuộc nhóm Frontend trên TopGit, cùng 8 topic GitHub. Trang Trending và Topics liệt kê các repo cùng số sao và cùng ngôn ngữ để so sánh.
Đọc thêm về netlify/next-on-netlify ở đâu?
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/netlify/next-on-netlify là nguồn chính thức.
netlify/next-on-netlify có bao nhiêu sao?
netlify/next-on-netlify có 727 sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/netlify/next-on-netlify. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
netlify/next-on-netlify có những chủ đề gì?
GitHub topics của netlify/next-on-netlify: "lambda-functions", "netlify", "netlify-deployment", "netlify-functions", "next-on-netlify", "nextjs", "server-side-rendering", "serverless". TopGit xếp repo vào nhóm Frontend.
netlify/next-on-netlify còn đang phát triển không?
Commit gần nhất trên netlify/next-on-netlify là 5.3 năm trước (theo timestamp GitHub). Repo có 64 fork — một chỉ báo về mức độ quan tâm của cộng đồng.
netlify/next-on-netlify viết bằng ngôn ngữ gì?
netlify/next-on-netlify chủ yếu viết bằng JavaScript. Trường "language" của GitHub dựa trên phần lớn byte ở nhánh mặc định.
Vì sao netlify/next-on-netlify được xếp vào nhóm Frontend?
TopGit xếp netlify/next-on-netlify vào nhóm Frontend dựa trên GitHub topics và mô tả của repo (gắn thẻ: "lambda-functions", "netlify", "netlify-deployment"). Việc phân loại dựa trên metadata thật của repo, không phải đoán theo cảm tính biên tập.
Đọc đầy đủ README ở tab phía trên.
Chưa chắc next-on-netlify có hợp với bạn?
Để ChatGPT, Claude hoặc Perplexity tìm hiểu giúp — bấm bên dưới và xem AI nói gì về next-on-netlify.