From 1cf58e9f9bf3ab87dafa5ef383b7dddc4307bbbd Mon Sep 17 00:00:00 2001
From: DefectingCat
Date: Fri, 18 Feb 2022 11:21:05 +0800
Subject: [PATCH] Update nextjs to 12.1 * update modify post save to db *
Update concurrent fectures * Update exist post
---
components/post/PostTOC.tsx | 3 -
next.config.js | 5 +-
package.json | 2 +-
pages/_app.tsx | 1 +
pages/_document.tsx | 13 ----
pages/api/posts.ts | 2 -
public/posts/我的开发环境.md | 34 +++++++++-
scripts/build-post.mjs | 91 ++++++++++++++++++++-----
yarn.lock | 128 +++++++++++++++++------------------
9 files changed, 177 insertions(+), 102 deletions(-)
delete mode 100644 pages/_document.tsx
diff --git a/components/post/PostTOC.tsx b/components/post/PostTOC.tsx
index 4bfa516..2ff151c 100644
--- a/components/post/PostTOC.tsx
+++ b/components/post/PostTOC.tsx
@@ -6,11 +6,8 @@ import remarkRehype from 'remark-rehype';
import rehypeRaw from 'rehype-raw';
import rehypeSlug from 'rehype-slug';
import rehypeReact from 'rehype-react';
-import dynamic from 'next/dynamic';
import cn from 'classnames';
-const Link = dynamic(() => import('components/RUA/RUALink'));
-
interface Props {
content: string;
}
diff --git a/next.config.js b/next.config.js
index 19f057f..8fda6ed 100644
--- a/next.config.js
+++ b/next.config.js
@@ -13,7 +13,8 @@ module.exports = withMDX({
pageExtensions: ['ts', 'tsx', 'js', 'jsx', 'md', 'mdx'],
swcMinify: true,
experimental: {
- // concurrentFeatures: true,
- // serverComponents: true,
+ concurrentFeatures: true,
+ // runtime: 'nodejs',
+ outputStandalone: true,
},
});
diff --git a/package.json b/package.json
index fcd72d6..3c783d1 100644
--- a/package.json
+++ b/package.json
@@ -20,7 +20,7 @@
"date-fns": "^2.28.0",
"gray-matter": "^4.0.3",
"highlight.js": "^11.4.0",
- "next": "^12.0.9",
+ "next": "^12.1.0",
"react": "^18.0.0-rc.0",
"react-dom": "^18.0.0-rc.0",
"react-icons": "^4.3.1",
diff --git a/pages/_app.tsx b/pages/_app.tsx
index 0c863e0..b5d0a52 100644
--- a/pages/_app.tsx
+++ b/pages/_app.tsx
@@ -8,6 +8,7 @@ import Head from 'next/head';
import { MDXProvider } from '@mdx-js/react';
import dynamic from 'next/dynamic';
import RUAStore from 'lib/store';
+import Script from 'next/script';
const H2 = dynamic(() => import('components/MDX/MDXH2'));
diff --git a/pages/_document.tsx b/pages/_document.tsx
deleted file mode 100644
index e1e9cbb..0000000
--- a/pages/_document.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import { Html, Head, Main, NextScript } from 'next/document';
-
-export default function Document() {
- return (
-
-
-
-
-
-
-
- );
-}
diff --git a/pages/api/posts.ts b/pages/api/posts.ts
index 7244ccd..80af0b2 100644
--- a/pages/api/posts.ts
+++ b/pages/api/posts.ts
@@ -9,8 +9,6 @@ export default async function handler(
res: NextApiResponse
) {
const search = async () => {
- const searchBody = req.query;
-
const totalNum = await prisma.posts.count();
const posts = await prisma.posts.findMany({
orderBy: {
diff --git a/public/posts/我的开发环境.md b/public/posts/我的开发环境.md
index 86e6f38..a8963fa 100644
--- a/public/posts/我的开发环境.md
+++ b/public/posts/我的开发环境.md
@@ -1,6 +1,6 @@
---
title: 我的开发环境
-date: 2021-12-03 23:14:42
+date: 2022-02-18 11:42:33
tags: [Linux, Server]
categories: 实践
url: my-development-environment
@@ -169,6 +169,38 @@ registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
对于 Windows 环境,则需要 `C:\Users\{username}\.cargo` 目录下的 `config` 文件,添加对应的源地址。
+### Go mod
+
+Go mod 支持 proxy 设置:
+
+```bash
+go env -w GO111MODULE=on
+
+# 1. 七牛 CDN
+go env -w GOPROXY=https://goproxy.cn,direct
+
+# 2. 阿里云
+go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
+
+# 3. 官方
+go env -w GOPROXY=https://goproxy.io,direct
+```
+
+### pypi
+
+同样清华大学的源,pypi 镜像每 5 分钟同步一次。
+
+```bash
+pip install pip -U
+pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
+```
+
+如果到 pip 默认源的网络连接较差,临时使用本镜像站来升级 pip:
+
+```bash
+pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U
+```
+
## 对于本机
目前主要是使用 WSL2 中的 Ubuntu 作为开发环境的,WSL2 目前比较大的问题就是每次其 IP 地址都会变动,宿主机的地址,也就是它的网关也会一直变。
diff --git a/scripts/build-post.mjs b/scripts/build-post.mjs
index c1dcdac..bc287b9 100644
--- a/scripts/build-post.mjs
+++ b/scripts/build-post.mjs
@@ -74,6 +74,8 @@ async function saveTagsToDB(posts) {
});
const allTags = Array.from(allTagsSet);
+ let newTagsNum = 0;
+
// Find tag in DB by name
for (const tag of allTags) {
const tagInDB = await prisma.tags.findFirst({
@@ -93,13 +95,14 @@ async function saveTagsToDB(posts) {
},
});
+ newTagsNum++;
console.log(
`Save tag ${tagReadToDB.name} sucessfuly! id: ${tagReadToDB.id}`
);
}
}
- console.log('Save tag to DB done!');
+ if (newTagsNum) console.log(`Save ${newTagsNum} tags to DB done!`);
}
async function saveCategoryToDB(posts) {
@@ -108,6 +111,8 @@ async function saveCategoryToDB(posts) {
if (post.categories) allCategoies.push(post.categories);
});
+ let newCateNum = 0;
+
for (const category of allCategoies) {
const categoryInDB = await prisma.category.findFirst({
select: {
@@ -126,13 +131,14 @@ async function saveCategoryToDB(posts) {
},
});
+ newCateNum++;
console.log(
`Save category ${categoryReadToDB.name} sucessfuly! id: ${categoryReadToDB.id}`
);
}
}
- console.log('Save category to DB done!');
+ if (newCateNum) console.log(`Save ${newCateNum} categories to DB done!`);
}
async function savePostToDB(posts) {
@@ -146,30 +152,35 @@ async function savePostToDB(posts) {
},
});
+ let newPostNum = 0;
+ let updatePostNum = 0;
+
for (const post of posts) {
const postInDB = await prisma.posts.findFirst({
select: {
file_name: true,
+ date: true,
+ id: true,
},
where: {
file_name: post.file_name,
},
});
+ const {
+ title,
+ date,
+ tags,
+ categories,
+ url,
+ index_img,
+ content,
+ desc,
+ file_name,
+ } = post;
+
// If don't exist, insert tag to DB.
if (postInDB == null) {
- const {
- title,
- date,
- tags,
- categories,
- url,
- index_img,
- content,
- desc,
- file_name,
- } = post;
-
const categoryId = await prisma.category.findFirst({
select: {
id: true,
@@ -206,13 +217,61 @@ async function savePostToDB(posts) {
},
});
+ newPostNum++;
console.log(
- `Save post ${postReadToDB.title} sucessfuly! id: ${postReadToDB.id}`
+ `Save new post ${postReadToDB.title} sucessfully! id: ${postReadToDB.id}`
);
+ } else {
+ const postDate = new Date(post.date);
+ const postInDBDate = new Date(postInDB.date);
+
+ // Update exist post.
+ if (postDate.getTime() !== postInDBDate.getTime()) {
+ const categoryId = await prisma.category.findFirst({
+ select: {
+ id: true,
+ },
+ where: {
+ name: categories,
+ },
+ });
+
+ const postUpdateRes = await prisma.posts.update({
+ select: {
+ title: true,
+ },
+ where: {
+ id: postInDB.id,
+ },
+ data: {
+ title,
+ date,
+ url,
+ index_img: index_img ?? null,
+ content,
+ desc,
+ file_name,
+ tags: tags
+ ? {
+ connect: await findPostTag(tags),
+ }
+ : {},
+ categories: {
+ connect: {
+ id: categoryId.id,
+ },
+ },
+ },
+ });
+
+ updatePostNum++;
+ console.log(`Update post ${postUpdateRes.title} sucessfully!`);
+ }
}
}
- console.log('Save post to DB done!');
+ if (newPostNum) console.log(`Save new ${newPostNum} post(s) to DB done!`);
+ if (updatePostNum) console.log(`Update ${updatePostNum} post(s) to DB done!`);
}
async function findPostTag(tags) {
diff --git a/yarn.lock b/yarn.lock
index 74f53e9..1452168 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -727,10 +727,10 @@
resolved "https://registry.nlark.com/@mdx-js/util/download/@mdx-js/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b"
integrity sha1-IZ39ia5bl6iAHwFTI/+kti9FcYs=
-"@next/env@12.0.9":
- version "12.0.9"
- resolved "https://registry.npmmirror.com/@next/env/download/@next/env-12.0.9.tgz#4c9e9eef00226145d9629a846b8cc31878e1328c"
- integrity sha512-oBlkyDop0Stf7MPIzETGv5r0YT/G/weBrknoPOUTaa5qwOeGjuy6gsOVc/SBtrBkOoBmRpD+fFhQJPvmo1mS+g==
+"@next/env@12.1.0":
+ version "12.1.0"
+ resolved "https://registry.npmmirror.com/@next/env/-/env-12.1.0.tgz#73713399399b34aa5a01771fb73272b55b22c314"
+ integrity sha512-nrIgY6t17FQ9xxwH3jj0a6EOiQ/WDHUos35Hghtr+SWN/ntHIQ7UpuvSi0vaLzZVHQWaDupKI+liO5vANcDeTQ==
"@next/eslint-plugin-next@12.0.9":
version "12.0.9"
@@ -744,60 +744,60 @@
resolved "https://registry.npmmirror.com/@next/mdx/download/@next/mdx-12.0.9.tgz#9a3036e6b95371301a503dd7992ced7e10dfc712"
integrity sha512-BVAUT5VVHrmztpeYnvt1S5Afq42oxl1uz49QyUHPfXfqCgrXM+SHVGnTZ76XnuSz4TTqJZdVpHdhgB8Qjnt46A==
-"@next/swc-android-arm64@12.0.9":
- version "12.0.9"
- resolved "https://registry.npmmirror.com/@next/swc-android-arm64/download/@next/swc-android-arm64-12.0.9.tgz#2cdbcc1814471044ea0e057b475090d25654833c"
- integrity sha512-aVqgsEn5plmUH2X58sjzhHsH/6majucWTMaaBEs7hHO2+GCwCZc7zaLH4XCBMKPES9Yaja8/pYUbvZQE9DqgFw==
+"@next/swc-android-arm64@12.1.0":
+ version "12.1.0"
+ resolved "https://registry.npmmirror.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.0.tgz#865ba3a9afc204ff2bdeea49dd64d58705007a39"
+ integrity sha512-/280MLdZe0W03stA69iL+v6I+J1ascrQ6FrXBlXGCsGzrfMaGr7fskMa0T5AhQIVQD4nA/46QQWxG//DYuFBcA==
-"@next/swc-darwin-arm64@12.0.9":
- version "12.0.9"
- resolved "https://registry.npmmirror.com/@next/swc-darwin-arm64/download/@next/swc-darwin-arm64-12.0.9.tgz#ea200929d7116de12c6f3b13ff75f9522c2153e3"
- integrity sha512-uAgRKm4a2nVdyBiPPJokvmDD1saugOvxljz9ld2ih0CCg5S9vBhqaj3kPGCQBj9hSu3q+Lng2CHnQqG3ga1jzA==
+"@next/swc-darwin-arm64@12.1.0":
+ version "12.1.0"
+ resolved "https://registry.npmmirror.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.0.tgz#08e8b411b8accd095009ed12efbc2f1d4d547135"
+ integrity sha512-R8vcXE2/iONJ1Unf5Ptqjk6LRW3bggH+8drNkkzH4FLEQkHtELhvcmJwkXcuipyQCsIakldAXhRbZmm3YN1vXg==
-"@next/swc-darwin-x64@12.0.9":
- version "12.0.9"
- resolved "https://registry.npmmirror.com/@next/swc-darwin-x64/download/@next/swc-darwin-x64-12.0.9.tgz#32800a7a9aff4bfd2038b0bce3657ece8708a87b"
- integrity sha512-fDOs2lZIyrAdU18IxMA5orBPn9qLbOdu55gXSTNZOhyRJ8ugtbUAejsK7OL0boJy0CCHPAdVRXm01Mwk8tZ9RQ==
+"@next/swc-darwin-x64@12.1.0":
+ version "12.1.0"
+ resolved "https://registry.npmmirror.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.0.tgz#fcd684497a76e8feaca88db3c394480ff0b007cd"
+ integrity sha512-ieAz0/J0PhmbZBB8+EA/JGdhRHBogF8BWaeqR7hwveb6SYEIJaDNQy0I+ZN8gF8hLj63bEDxJAs/cEhdnTq+ug==
-"@next/swc-linux-arm-gnueabihf@12.0.9":
- version "12.0.9"
- resolved "https://registry.npmmirror.com/@next/swc-linux-arm-gnueabihf/download/@next/swc-linux-arm-gnueabihf-12.0.9.tgz#da012dfb69ad2abc3d4045395581b650048bdd7c"
- integrity sha512-/ni0p9DBvATUML9RQ1ycQuf05uOYKdzA6iI8+eRsARjpGbFVUFbge7XPzlj9g2Q9YWgoN8CSjFGnKRlyky5uHA==
+"@next/swc-linux-arm-gnueabihf@12.1.0":
+ version "12.1.0"
+ resolved "https://registry.npmmirror.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.0.tgz#9ec6380a27938a5799aaa6035c205b3c478468a7"
+ integrity sha512-njUd9hpl6o6A5d08dC0cKAgXKCzm5fFtgGe6i0eko8IAdtAPbtHxtpre3VeSxdZvuGFh+hb0REySQP9T1ttkog==
-"@next/swc-linux-arm64-gnu@12.0.9":
- version "12.0.9"
- resolved "https://registry.npmmirror.com/@next/swc-linux-arm64-gnu/download/@next/swc-linux-arm64-gnu-12.0.9.tgz#fe704c0a1cb048ef19d4a24b2c990574c96c933b"
- integrity sha512-AphxilJDf95rUxJDHgM9Ww1DaYXZWqTvoKwXeej/0SgSvICcRZrLaFDrkojdXz0Rxr4igX2OdYR1S4/Hj1jWOQ==
+"@next/swc-linux-arm64-gnu@12.1.0":
+ version "12.1.0"
+ resolved "https://registry.npmmirror.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.0.tgz#7f4196dff1049cea479607c75b81033ae2dbd093"
+ integrity sha512-OqangJLkRxVxMhDtcb7Qn1xjzFA3s50EIxY7mljbSCLybU+sByPaWAHY4px97ieOlr2y4S0xdPKkQ3BCAwyo6Q==
-"@next/swc-linux-arm64-musl@12.0.9":
- version "12.0.9"
- resolved "https://registry.npmmirror.com/@next/swc-linux-arm64-musl/download/@next/swc-linux-arm64-musl-12.0.9.tgz#b2bb68940903cd64f7875979ed9907e946dc4f3e"
- integrity sha512-K5jbvNNzF3mRjWmPdxP5Bg87i7FHivfBj/L0KJlxpkLSC8sffBJDmB6jtMnI7wiPj9J6vmLkbGtSosln78xAlQ==
+"@next/swc-linux-arm64-musl@12.1.0":
+ version "12.1.0"
+ resolved "https://registry.npmmirror.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.0.tgz#b445f767569cdc2dddee785ca495e1a88c025566"
+ integrity sha512-hB8cLSt4GdmOpcwRe2UzI5UWn6HHO/vLkr5OTuNvCJ5xGDwpPXelVkYW/0+C3g5axbDW2Tym4S+MQCkkH9QfWA==
-"@next/swc-linux-x64-gnu@12.0.9":
- version "12.0.9"
- resolved "https://registry.npmmirror.com/@next/swc-linux-x64-gnu/download/@next/swc-linux-x64-gnu-12.0.9.tgz#b700ba095551d4f6e830b92d4593a3b6e73bba82"
- integrity sha512-bJZ9bkMkQzsY+UyWezEZ77GWQ4TzwKeXdayX3U3+aEkL8k5C6eKBXlidWdrhu0teLmaUXIyWerWrLnJzwGXdfw==
+"@next/swc-linux-x64-gnu@12.1.0":
+ version "12.1.0"
+ resolved "https://registry.npmmirror.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.0.tgz#67610e9be4fbc987de7535f1bcb17e45fe12f90e"
+ integrity sha512-OKO4R/digvrVuweSw/uBM4nSdyzsBV5EwkUeeG4KVpkIZEe64ZwRpnFB65bC6hGwxIBnTv5NMSnJ+0K/WmG78A==
-"@next/swc-linux-x64-musl@12.0.9":
- version "12.0.9"
- resolved "https://registry.npmmirror.com/@next/swc-linux-x64-musl/download/@next/swc-linux-x64-musl-12.0.9.tgz#678460266f544b52f1190ef0c3494e436608591e"
- integrity sha512-SR9p0R+v1T32DTXPVAXZw31pmJAkSDotC6Afy+mfC0xrEL3pp95R8sGXYAAUCEPkQp0MEeUOVy2LrToe92X7hQ==
+"@next/swc-linux-x64-musl@12.1.0":
+ version "12.1.0"
+ resolved "https://registry.npmmirror.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.0.tgz#ea19a23db08a9f2e34ac30401f774cf7d1669d31"
+ integrity sha512-JohhgAHZvOD3rQY7tlp7NlmvtvYHBYgY0x5ZCecUT6eCCcl9lv6iV3nfu82ErkxNk1H893fqH0FUpznZ/H3pSw==
-"@next/swc-win32-arm64-msvc@12.0.9":
- version "12.0.9"
- resolved "https://registry.npmmirror.com/@next/swc-win32-arm64-msvc/download/@next/swc-win32-arm64-msvc-12.0.9.tgz#f70e5bd0821ca168aeef117e51ab870265ceeeb1"
- integrity sha512-mzQ1A8vfHhJrvEy5KJZGZWEByXthyKfWofvFaf+oo/5nJl/0Bz1ODP2ajSmbLG++77Eo2AROgbm9pkW1ucvG2A==
+"@next/swc-win32-arm64-msvc@12.1.0":
+ version "12.1.0"
+ resolved "https://registry.npmmirror.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.0.tgz#eadf054fc412085659b98e145435bbba200b5283"
+ integrity sha512-T/3gIE6QEfKIJ4dmJk75v9hhNiYZhQYAoYm4iVo1TgcsuaKLFa+zMPh4056AHiG6n9tn2UQ1CFE8EoybEsqsSw==
-"@next/swc-win32-ia32-msvc@12.0.9":
- version "12.0.9"
- resolved "https://registry.npmmirror.com/@next/swc-win32-ia32-msvc/download/@next/swc-win32-ia32-msvc-12.0.9.tgz#0b853793754642cde9f9099087d4a86b6a99a24d"
- integrity sha512-MpD2vj1zjo1u3J3wiz3pEKse19Etz+P0GL6XfQkB/9a84vJQ1JWMaWBjmIdivzZv718Il2pRSSx8hymwPfguYQ==
+"@next/swc-win32-ia32-msvc@12.1.0":
+ version "12.1.0"
+ resolved "https://registry.npmmirror.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.0.tgz#68faeae10c89f698bf9d28759172b74c9c21bda1"
+ integrity sha512-iwnKgHJdqhIW19H9PRPM9j55V6RdcOo6rX+5imx832BCWzkDbyomWnlzBfr6ByUYfhohb8QuH4hSGEikpPqI0Q==
-"@next/swc-win32-x64-msvc@12.0.9":
- version "12.0.9"
- resolved "https://registry.npmmirror.com/@next/swc-win32-x64-msvc/download/@next/swc-win32-x64-msvc-12.0.9.tgz#f7d3b59000082cf65c84fdc61930b708aa5446e5"
- integrity sha512-1c/sxp/4Qz4F6rCxiYqAnrmghCOFt5hHZ9Kd+rXFW5Mqev4C4XDOUMHdBH55HgnJZqngYhOE0r/XNkCtsIojig==
+"@next/swc-win32-x64-msvc@12.1.0":
+ version "12.1.0"
+ resolved "https://registry.npmmirror.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.0.tgz#d27e7e76c87a460a4da99c5bfdb1618dcd6cd064"
+ integrity sha512-aBvcbMwuanDH4EMrL2TthNJy+4nP59Bimn8egqv6GHMVj0a44cU6Au4PjOhLNqEh9l+IpRGBqMTzec94UdC5xg==
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
@@ -4660,28 +4660,28 @@ natural-compare@^1.4.0:
resolved "https://registry.nlark.com/natural-compare/download/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
-next@^12.0.9:
- version "12.0.9"
- resolved "https://registry.npmmirror.com/next/download/next-12.0.9.tgz#4eb3006b63bb866f5c2918ca0003e98f4259e063"
- integrity sha512-omfYqoR/DvbdOIJ6SS1unKJ4mGIxUPs0RPa7wr/Mft22OCKgJhuG+aI9KFYi5ZJBwoFQk1vqaMKpWz5qr+dN0Q==
+next@^12.1.0:
+ version "12.1.0"
+ resolved "https://registry.npmmirror.com/next/-/next-12.1.0.tgz#c33d753b644be92fc58e06e5a214f143da61dd5d"
+ integrity sha512-s885kWvnIlxsUFHq9UGyIyLiuD0G3BUC/xrH0CEnH5lHEWkwQcHOORgbDF0hbrW9vr/7am4ETfX4A7M6DjrE7Q==
dependencies:
- "@next/env" "12.0.9"
+ "@next/env" "12.1.0"
caniuse-lite "^1.0.30001283"
postcss "8.4.5"
styled-jsx "5.0.0"
use-subscription "1.5.1"
optionalDependencies:
- "@next/swc-android-arm64" "12.0.9"
- "@next/swc-darwin-arm64" "12.0.9"
- "@next/swc-darwin-x64" "12.0.9"
- "@next/swc-linux-arm-gnueabihf" "12.0.9"
- "@next/swc-linux-arm64-gnu" "12.0.9"
- "@next/swc-linux-arm64-musl" "12.0.9"
- "@next/swc-linux-x64-gnu" "12.0.9"
- "@next/swc-linux-x64-musl" "12.0.9"
- "@next/swc-win32-arm64-msvc" "12.0.9"
- "@next/swc-win32-ia32-msvc" "12.0.9"
- "@next/swc-win32-x64-msvc" "12.0.9"
+ "@next/swc-android-arm64" "12.1.0"
+ "@next/swc-darwin-arm64" "12.1.0"
+ "@next/swc-darwin-x64" "12.1.0"
+ "@next/swc-linux-arm-gnueabihf" "12.1.0"
+ "@next/swc-linux-arm64-gnu" "12.1.0"
+ "@next/swc-linux-arm64-musl" "12.1.0"
+ "@next/swc-linux-x64-gnu" "12.1.0"
+ "@next/swc-linux-x64-musl" "12.1.0"
+ "@next/swc-win32-arm64-msvc" "12.1.0"
+ "@next/swc-win32-ia32-msvc" "12.1.0"
+ "@next/swc-win32-x64-msvc" "12.1.0"
node-abi@^3.3.0:
version "3.5.0"