mirror of
https://github.com/jambonz/next-static-site.git
synced 2025-12-19 04:47:44 +00:00
Update nextjs version, fix lib/data script, lint-staged
This commit is contained in:
25
.babelrc
25
.babelrc
@@ -1,25 +0,0 @@
|
|||||||
{
|
|
||||||
"presets": [
|
|
||||||
"next/babel"
|
|
||||||
],
|
|
||||||
"plugins": [
|
|
||||||
[
|
|
||||||
"prismjs",
|
|
||||||
{
|
|
||||||
"languages": [
|
|
||||||
"javascript",
|
|
||||||
"js",
|
|
||||||
"json",
|
|
||||||
"bash",
|
|
||||||
"http"
|
|
||||||
],
|
|
||||||
"plugins": [
|
|
||||||
"line-numbers",
|
|
||||||
"show-language"
|
|
||||||
],
|
|
||||||
"theme": "okaidia",
|
|
||||||
"css": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
**/node_modules/*
|
|
||||||
**/out/*
|
|
||||||
**/.next/*
|
|
||||||
next.config.js
|
|
||||||
**/cypress/*
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
{
|
|
||||||
"settings": {
|
|
||||||
"react": {
|
|
||||||
"version": "detect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"env": {
|
|
||||||
"browser": true,
|
|
||||||
"es2021": true,
|
|
||||||
"node": true
|
|
||||||
},
|
|
||||||
"extends": [
|
|
||||||
"eslint:recommended",
|
|
||||||
"plugin:react/recommended",
|
|
||||||
"react-app"
|
|
||||||
],
|
|
||||||
"parserOptions": {
|
|
||||||
"ecmaFeatures": {
|
|
||||||
"jsx": true
|
|
||||||
},
|
|
||||||
"ecmaVersion": 12,
|
|
||||||
"sourceType": "module"
|
|
||||||
},
|
|
||||||
"plugins": [
|
|
||||||
"react"
|
|
||||||
],
|
|
||||||
"rules": {
|
|
||||||
"react/prop-types": "off",
|
|
||||||
"react/react-in-jsx-scope": "off",
|
|
||||||
"jsx-a11y/anchor-is-valid": "off",
|
|
||||||
"jsx-a11y/alt-text": "off",
|
|
||||||
"indent": [
|
|
||||||
"error",
|
|
||||||
2
|
|
||||||
],
|
|
||||||
"quotes": [
|
|
||||||
"error",
|
|
||||||
"single"
|
|
||||||
],
|
|
||||||
"semi": [
|
|
||||||
"error",
|
|
||||||
"always"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
. "$(dirname "$0")/_/husky.sh"
|
. "$(dirname "$0")/_/husky.sh"
|
||||||
|
|
||||||
|
yarn lint-staged
|
||||||
yarn build
|
yarn build
|
||||||
|
|||||||
33
lib/data.js
33
lib/data.js
@@ -31,19 +31,6 @@ export function getData(key) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get a cleaned slug for Next.js static paths pattern
|
|
||||||
* @param {string} scope The subdirectory of ./markdown
|
|
||||||
* @param {string} slug The fileName of a found markdown file
|
|
||||||
* @returns {Array}
|
|
||||||
*/
|
|
||||||
function _getCleanSlug(scope, slug) {
|
|
||||||
return slug
|
|
||||||
.replace(path.join(markdownDir, scope), '')
|
|
||||||
.replace(/^\/+|\/+$/, '')
|
|
||||||
.split('/');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load Markdown and YAML front-matter to generate the static props for Next.js docs component
|
* Load Markdown and YAML front-matter to generate the static props for Next.js docs component
|
||||||
* @param {string} filePath The full path to a markdown file
|
* @param {string} filePath The full path to a markdown file
|
||||||
@@ -89,12 +76,9 @@ function _getMarkdownPaths(dirPath, scope, arrayOfFiles = [{params:{slug:[]}}])
|
|||||||
const isIndexFile = fs.existsSync(indexFile);
|
const isIndexFile = fs.existsSync(indexFile);
|
||||||
|
|
||||||
if (isIndexFile) {
|
if (isIndexFile) {
|
||||||
slug = _getCleanSlug(scope, path.join(
|
slug = [
|
||||||
__dirname,
|
file,
|
||||||
dirPath,
|
];
|
||||||
'/',
|
|
||||||
file
|
|
||||||
));
|
|
||||||
|
|
||||||
arrayOfFiles.push({
|
arrayOfFiles.push({
|
||||||
params: {
|
params: {
|
||||||
@@ -106,12 +90,11 @@ function _getMarkdownPaths(dirPath, scope, arrayOfFiles = [{params:{slug:[]}}])
|
|||||||
arrayOfFiles = _getMarkdownPaths(filePath, scope, arrayOfFiles);
|
arrayOfFiles = _getMarkdownPaths(filePath, scope, arrayOfFiles);
|
||||||
|
|
||||||
} else if (isMarkdown) {
|
} else if (isMarkdown) {
|
||||||
slug = _getCleanSlug(scope, path.join(
|
slug = filePath
|
||||||
__dirname,
|
.replace(path.join(markdownDir, scope), '')
|
||||||
dirPath,
|
.replace(/\.md$/, '')
|
||||||
'/',
|
.replace(/^\/+|\/+$/, '')
|
||||||
file.replace(/\.md$/, '')
|
.split('/');
|
||||||
));
|
|
||||||
|
|
||||||
arrayOfFiles.push({
|
arrayOfFiles.push({
|
||||||
params: {
|
params: {
|
||||||
|
|||||||
@@ -1,15 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
trailingSlash: true,
|
trailingSlash: true,
|
||||||
webpack: (config, { dev, isServer }) => {
|
|
||||||
// Replace React with Preact only for client
|
|
||||||
if (!isServer) {
|
|
||||||
Object.assign(config.resolve.alias, {
|
|
||||||
react: 'preact/compat',
|
|
||||||
'react-dom/test-utils': 'preact/test-utils',
|
|
||||||
'react-dom': 'preact/compat',
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return config;
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|||||||
85
package.json
85
package.json
@@ -7,7 +7,6 @@
|
|||||||
"prepare": "husky install",
|
"prepare": "husky install",
|
||||||
"dev": "next",
|
"dev": "next",
|
||||||
"start": "next start",
|
"start": "next start",
|
||||||
"prebuild": "yarn lint",
|
|
||||||
"build": "next build",
|
"build": "next build",
|
||||||
"export": "next export",
|
"export": "next export",
|
||||||
"pretest": "node cypress/scripts/fixtures.js",
|
"pretest": "node cypress/scripts/fixtures.js",
|
||||||
@@ -20,8 +19,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"classnames": "^2.2.6",
|
"classnames": "^2.2.6",
|
||||||
"nanoid": "^3.1.22",
|
"nanoid": "^3.1.22",
|
||||||
"next": "^10.0.8-canary.9",
|
"next": "^12.1.4",
|
||||||
"preact": "^10.5.13",
|
|
||||||
"prismjs": "^1.23.0",
|
"prismjs": "^1.23.0",
|
||||||
"react": "^17.0.1",
|
"react": "^17.0.1",
|
||||||
"react-dom": "^17.0.1",
|
"react-dom": "^17.0.1",
|
||||||
@@ -41,10 +39,91 @@
|
|||||||
"eslint-plugin-react-hooks": "^4.2.0",
|
"eslint-plugin-react-hooks": "^4.2.0",
|
||||||
"gray-matter": "^4.0.2",
|
"gray-matter": "^4.0.2",
|
||||||
"husky": "^6.0.0",
|
"husky": "^6.0.0",
|
||||||
|
"lint-staged": "^12.4.1",
|
||||||
"remark": "^13.0.0",
|
"remark": "^13.0.0",
|
||||||
"remark-gfm": "^1.0.0",
|
"remark-gfm": "^1.0.0",
|
||||||
"remark-html": "^13.0.1",
|
"remark-html": "^13.0.1",
|
||||||
"sass": "^1.32.8",
|
"sass": "^1.32.8",
|
||||||
"yamljs": "^0.3.0"
|
"yamljs": "^0.3.0"
|
||||||
|
},
|
||||||
|
"lint-staged": {
|
||||||
|
"*.js": "yarn lint"
|
||||||
|
},
|
||||||
|
"eslintConfig": {
|
||||||
|
"settings": {
|
||||||
|
"react": {
|
||||||
|
"version": "detect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"env": {
|
||||||
|
"browser": true,
|
||||||
|
"es2021": true,
|
||||||
|
"node": true
|
||||||
|
},
|
||||||
|
"extends": [
|
||||||
|
"eslint:recommended",
|
||||||
|
"plugin:react/recommended",
|
||||||
|
"react-app"
|
||||||
|
],
|
||||||
|
"parserOptions": {
|
||||||
|
"ecmaFeatures": {
|
||||||
|
"jsx": true
|
||||||
|
},
|
||||||
|
"ecmaVersion": 12,
|
||||||
|
"sourceType": "module"
|
||||||
|
},
|
||||||
|
"plugins": [
|
||||||
|
"react"
|
||||||
|
],
|
||||||
|
"rules": {
|
||||||
|
"react/prop-types": "off",
|
||||||
|
"react/react-in-jsx-scope": "off",
|
||||||
|
"jsx-a11y/anchor-is-valid": "off",
|
||||||
|
"jsx-a11y/alt-text": "off",
|
||||||
|
"indent": [
|
||||||
|
"error",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"quotes": [
|
||||||
|
"error",
|
||||||
|
"single"
|
||||||
|
],
|
||||||
|
"semi": [
|
||||||
|
"error",
|
||||||
|
"always"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ignorePatterns": [
|
||||||
|
"**/node_modules/*",
|
||||||
|
"**/out/*",
|
||||||
|
"**/.next/*",
|
||||||
|
"next.config.js",
|
||||||
|
"**/cypress/*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"babel": {
|
||||||
|
"presets": [
|
||||||
|
"next/babel"
|
||||||
|
],
|
||||||
|
"plugins": [
|
||||||
|
[
|
||||||
|
"prismjs",
|
||||||
|
{
|
||||||
|
"languages": [
|
||||||
|
"javascript",
|
||||||
|
"js",
|
||||||
|
"json",
|
||||||
|
"bash",
|
||||||
|
"http"
|
||||||
|
],
|
||||||
|
"plugins": [
|
||||||
|
"line-numbers",
|
||||||
|
"show-language"
|
||||||
|
],
|
||||||
|
"theme": "okaidia",
|
||||||
|
"css": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ export async function getStaticProps() {
|
|||||||
const data = getData('privacy');
|
const data = getData('privacy');
|
||||||
|
|
||||||
// Use the new public method in a more ad hoc manner like this...
|
// Use the new public method in a more ad hoc manner like this...
|
||||||
const parsed = await getParsedMarkdown(path.join(process.cwd(), 'pages', 'privacy.md'));
|
const parsed = await getParsedMarkdown(path.join(process.cwd(), 'markdown', 'privacy.md'));
|
||||||
|
|
||||||
return {
|
return {
|
||||||
props: {
|
props: {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ export async function getStaticProps() {
|
|||||||
const data = getData('terms');
|
const data = getData('terms');
|
||||||
|
|
||||||
// Use the new public method in a more ad hoc manner like this...
|
// Use the new public method in a more ad hoc manner like this...
|
||||||
const parsed = await getParsedMarkdown(path.join(process.cwd(), 'pages', 'terms.md'));
|
const parsed = await getParsedMarkdown(path.join(process.cwd(), 'markdown', 'terms.md'));
|
||||||
|
|
||||||
return {
|
return {
|
||||||
props: {
|
props: {
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 48 KiB |
Reference in New Issue
Block a user