mirror of
https://github.com/actions/configure-pages.git
synced 2026-03-30 10:04:52 +00:00
Compare commits
40 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2ce6d5eaa1 | ||
|
|
bb6976f8d1 | ||
|
|
f2098a32c3 | ||
|
|
7fa35a05fd | ||
|
|
c3113876b0 | ||
|
|
af5f3c3f72 | ||
|
|
ad83b485e7 | ||
|
|
a84400a87f | ||
|
|
7a0a617c8a | ||
|
|
062df390be | ||
|
|
7619de7040 | ||
|
|
66e9ac3c2e | ||
|
|
4012a9fa87 | ||
|
|
4a12ff50fb | ||
|
|
a07391ec25 | ||
|
|
2491ca8488 | ||
|
|
875ec87ff9 | ||
|
|
4eadc891b5 | ||
|
|
c4feb8d01e | ||
|
|
1f9ca39237 | ||
|
|
1cefe6fc7c | ||
|
|
25a1ec8799 | ||
|
|
b9c4ac6c14 | ||
|
|
6e4f93b15d | ||
|
|
069c984c5e | ||
|
|
b030b061cb | ||
|
|
45efe60937 | ||
|
|
35c001ded6 | ||
|
|
27457957e6 | ||
|
|
7ec0edaa8e | ||
|
|
d48340abcd | ||
|
|
f53b57ff56 | ||
|
|
6d1d650751 | ||
|
|
61fd3a3cc1 | ||
|
|
0ec542a837 | ||
|
|
3a90973fd3 | ||
|
|
dc5b850bfd | ||
|
|
9a141972ca | ||
|
|
7d9bb68583 | ||
|
|
ec022f4ae9 |
17
.eslintrc.json
Normal file
17
.eslintrc.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"env": {
|
||||||
|
"commonjs": true,
|
||||||
|
"es2021": true,
|
||||||
|
"node": true,
|
||||||
|
"jest": true
|
||||||
|
},
|
||||||
|
"plugins": ["github"],
|
||||||
|
"extends": ["eslint:recommended", "prettier", "plugin:github/internal"],
|
||||||
|
"parserOptions": {
|
||||||
|
"ecmaVersion": 12
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"semi": ["error", "never"]
|
||||||
|
},
|
||||||
|
"ignorePatterns": ["/dist/", "/src/fixtures/", "/src/blank-configurations/"]
|
||||||
|
}
|
||||||
42
.github/release-drafter.yml
vendored
42
.github/release-drafter.yml
vendored
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name-template: "v$RESOLVED_VERSION"
|
name-template: 'v$RESOLVED_VERSION'
|
||||||
tag-template: "v$RESOLVED_VERSION"
|
tag-template: 'v$RESOLVED_VERSION'
|
||||||
template: |
|
template: |
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
@@ -8,33 +8,33 @@ template: |
|
|||||||
|
|
||||||
See details of [all code changes](https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...v$RESOLVED_VERSION) since previous release.
|
See details of [all code changes](https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...v$RESOLVED_VERSION) since previous release.
|
||||||
categories:
|
categories:
|
||||||
- title: "🚀 Features"
|
- title: '🚀 Features'
|
||||||
labels:
|
labels:
|
||||||
- "feature"
|
- 'feature'
|
||||||
- "enhancement"
|
- 'enhancement'
|
||||||
- title: "🐛 Bug Fixes"
|
- title: '🐛 Bug Fixes'
|
||||||
labels:
|
labels:
|
||||||
- "fix"
|
- 'fix'
|
||||||
- "bugfix"
|
- 'bugfix'
|
||||||
- "bug"
|
- 'bug'
|
||||||
- title: "🧰 Maintenance"
|
- title: '🧰 Maintenance'
|
||||||
labels:
|
labels:
|
||||||
- "infrastructure"
|
- 'infrastructure'
|
||||||
- "automation"
|
- 'automation'
|
||||||
- "documentation"
|
- 'documentation'
|
||||||
- title: "🏎 Performance"
|
- title: '🏎 Performance'
|
||||||
label: "performance"
|
label: 'performance'
|
||||||
change-template: "- $TITLE @$AUTHOR (#$NUMBER)"
|
change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
|
||||||
version-resolver:
|
version-resolver:
|
||||||
major:
|
major:
|
||||||
labels:
|
labels:
|
||||||
- "type: breaking"
|
- 'type: breaking'
|
||||||
minor:
|
minor:
|
||||||
labels:
|
labels:
|
||||||
- "type: enhancement"
|
- 'type: enhancement'
|
||||||
patch:
|
patch:
|
||||||
labels:
|
labels:
|
||||||
- "type: bug"
|
- 'type: bug'
|
||||||
- "type: maintenance"
|
- 'type: maintenance'
|
||||||
- "type: documentation"
|
- 'type: documentation'
|
||||||
default: patch
|
default: patch
|
||||||
|
|||||||
5
.github/workflows/check-formatting.yml
vendored
5
.github/workflows/check-formatting.yml
vendored
@@ -1,4 +1,4 @@
|
|||||||
name: Checking formatting
|
name: Check formatting
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
@@ -17,11 +17,12 @@ concurrency:
|
|||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 2
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Setup Node.JS
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: 16.x
|
node-version: 16.x
|
||||||
|
|||||||
35
.github/workflows/lint.yml
vendored
Normal file
35
.github/workflows/lint.yml
vendored
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
name: Lint code
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
# This allows a subsequently queued workflow run to interrupt previous runs
|
||||||
|
concurrency:
|
||||||
|
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 2
|
||||||
|
steps:
|
||||||
|
- name: Check out repo
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Setup Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 16.x
|
||||||
|
cache: npm
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Run linter
|
||||||
|
run: npm run lint:check
|
||||||
4
.github/workflows/release.yml
vendored
4
.github/workflows/release.yml
vendored
@@ -1,11 +1,11 @@
|
|||||||
name: Release
|
name: Release
|
||||||
on:
|
on:
|
||||||
release:
|
release:
|
||||||
types: [published]
|
types: [released]
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
inputs:
|
inputs:
|
||||||
TAG_NAME:
|
TAG_NAME:
|
||||||
description: "Tag name that the major tag will point to"
|
description: 'Tag name that the major tag will point to'
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
env:
|
env:
|
||||||
|
|||||||
5
.prettierignore
Normal file
5
.prettierignore
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# Ignore build artifacts
|
||||||
|
/dist/
|
||||||
|
|
||||||
|
# Ignore all Markdown files
|
||||||
|
*.md
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
A GitHub Action to enable Pages and extract various metadata about a site. It can also be used to configure various static site generators we support as [starter workflows][starter-workflows].
|
A GitHub Action to enable Pages and extract various metadata about a site. It can also be used to configure various static site generators we support as [starter workflows][starter-workflows].
|
||||||
|
|
||||||
See [`set-pages-path.js`](src/set-pages-path.js) for more details on how we configure static site generators to work "out of the box" with GitHub Pages.
|
See [`set-pages-config.js`](src/set-pages-config.js) for more details on how we configure static site generators to work "out of the box" with GitHub Pages.
|
||||||
|
|
||||||
# Usage
|
# Usage
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ The scripts and documentation in this project are released under the [MIT Licens
|
|||||||
|
|
||||||
<!-- references -->
|
<!-- references -->
|
||||||
[starter-workflows]: https://github.com/actions/starter-workflows/tree/main/pages
|
[starter-workflows]: https://github.com/actions/starter-workflows/tree/main/pages
|
||||||
[release-list]: /releases
|
[release-list]: https://github.com/actions/configure-pages/releases
|
||||||
[draft-release]: .github/workflows/draft-release.yml
|
[draft-release]: .github/workflows/draft-release.yml
|
||||||
[release]: .github/workflows/release.yml
|
[release]: .github/workflows/release.yml
|
||||||
[release-workflow-runs]: /actions/workflows/release.yml
|
[release-workflow-runs]: https://github.com/actions/configure-pages/actions/workflows/release.yml
|
||||||
|
|||||||
@@ -21,10 +21,10 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
outputs:
|
outputs:
|
||||||
base_url:
|
base_url:
|
||||||
description: 'GitHub Pages site full base URL. Examples: "https://octocat.github.io/my-repo/", "https://octocat.github.io/", "https://www.example.com/"'
|
description: 'GitHub Pages site full base URL. Examples: "https://octocat.github.io/my-repo", "https://octocat.github.io", "https://www.example.com"'
|
||||||
origin:
|
origin:
|
||||||
description: 'GitHub Pages site origin. Examples: "https://octocat.github.io", "https://www.example.com"'
|
description: 'GitHub Pages site origin. Examples: "https://octocat.github.io", "https://www.example.com"'
|
||||||
host:
|
host:
|
||||||
description: 'GitHub Pages site host. Examples: "octocat.github.io", "www.example.com"'
|
description: 'GitHub Pages site host. Examples: "octocat.github.io", "www.example.com"'
|
||||||
base_path:
|
base_path:
|
||||||
description: 'GitHub Pages site full base path. Examples: "/my-repo/" or "/"'
|
description: 'GitHub Pages site full base path. Examples: "/my-repo" or ""'
|
||||||
|
|||||||
917
dist/index.js
vendored
917
dist/index.js
vendored
File diff suppressed because it is too large
Load Diff
2
dist/index.js.map
vendored
2
dist/index.js.map
vendored
File diff suppressed because one or more lines are too long
13
dist/licenses.txt
vendored
13
dist/licenses.txt
vendored
@@ -608,3 +608,16 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
|
|
||||||
|
|
||||||
|
uuid
|
||||||
|
MIT
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2010-2020 Robert Kieffer and other contributors
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|||||||
3887
package-lock.json
generated
3887
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
18
package.json
18
package.json
@@ -5,9 +5,12 @@
|
|||||||
"description": "A GitHub Action to enable Pages and extract various metadata about a site. It can also be used to configure various static site generators we support as starter workflows.",
|
"description": "A GitHub Action to enable Pages and extract various metadata about a site. It can also be used to configure various static site generators we support as starter workflows.",
|
||||||
"main": "./dist/index.js",
|
"main": "./dist/index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"format": "prettier --write 'src/**/*.js'",
|
"all": "npm run format && npm run lint && npm run prepare && npm run test",
|
||||||
"format:check": "prettier --check 'src/**/*.js'",
|
"format": "prettier --write .",
|
||||||
"prepare": "npm run format && ncc build src/index.js -o dist --source-map --license licenses.txt",
|
"format:check": "prettier --check .",
|
||||||
|
"lint": "DEBUG=eslint:cli-engine eslint --fix .",
|
||||||
|
"lint:check": "DEBUG=eslint:cli-engine eslint .",
|
||||||
|
"prepare": "ncc build src/index.js -o dist --source-map --license licenses.txt",
|
||||||
"test": "jest"
|
"test": "jest"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
@@ -21,14 +24,15 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/actions/configure-pages#readme",
|
"homepage": "https://github.com/actions/configure-pages#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.8.2",
|
"@actions/core": "^1.9.1",
|
||||||
"axios": "^0.27.2",
|
"axios": "^0.27.2",
|
||||||
"axios-retry": "^3.2.5",
|
"espree": "^9.3.2"
|
||||||
"espree": "^9.3.2",
|
|
||||||
"string-format": "^1.0.0"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vercel/ncc": "^0.34.0",
|
"@vercel/ncc": "^0.34.0",
|
||||||
|
"eslint": "^8.23.1",
|
||||||
|
"eslint-config-prettier": "^8.5.0",
|
||||||
|
"eslint-plugin-github": "^4.3.7",
|
||||||
"jest": "^28.1.1",
|
"jest": "^28.1.1",
|
||||||
"prettier": "^2.7.1"
|
"prettier": "^2.7.1"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ async function enablePagesSite({ repositoryNwo, githubToken }) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function getPagesSite({ repositoryNwo, githubToken }) {
|
async function getPagesSite({ repositoryNwo, githubToken }) {
|
||||||
try {
|
|
||||||
const pagesEndpoint = `${getApiBaseUrl()}/repos/${repositoryNwo}/pages`
|
const pagesEndpoint = `${getApiBaseUrl()}/repos/${repositoryNwo}/pages`
|
||||||
|
|
||||||
const response = await axios.get(pagesEndpoint, {
|
const response = await axios.get(pagesEndpoint, {
|
||||||
@@ -45,9 +44,6 @@ async function getPagesSite({ repositoryNwo, githubToken }) {
|
|||||||
|
|
||||||
const pageObject = response.data
|
const pageObject = response.data
|
||||||
return pageObject
|
return pageObject
|
||||||
} catch (error) {
|
|
||||||
throw error
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function findOrCreatePagesSite({ repositoryNwo, githubToken, enablement = true }) {
|
async function findOrCreatePagesSite({ repositoryNwo, githubToken, enablement = true }) {
|
||||||
|
|||||||
@@ -184,11 +184,12 @@ class ConfigParser {
|
|||||||
throw 'Could not find a configuration object in the configuration file'
|
throw 'Could not find a configuration object in the configuration file'
|
||||||
}
|
}
|
||||||
|
|
||||||
// A property may be nested in the configuration file. Split the property name with `.`
|
// A property may be nested in the configuration file. Split the property name with '.'
|
||||||
// then walk the configuration object one property at a time.
|
// then walk the configuration object one property at a time.
|
||||||
var depth = 0
|
var depth = 0
|
||||||
const properties = propertyName.split('.')
|
const properties = propertyName.split('.')
|
||||||
var lastNode = configurationObject
|
var lastNode = configurationObject
|
||||||
|
// eslint-disable-next-line no-constant-condition
|
||||||
while (true) {
|
while (true) {
|
||||||
// Find the node for the current property
|
// Find the node for the current property
|
||||||
var propertyNode = this.findProperty(lastNode, properties[depth])
|
var propertyNode = this.findProperty(lastNode, properties[depth])
|
||||||
@@ -265,7 +266,7 @@ class ConfigParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Logging
|
// Logging
|
||||||
core.info(`Injection successful, new configuration:`)
|
core.info('Injection successful, new configuration:')
|
||||||
core.info(this.configuration)
|
core.info(this.configuration)
|
||||||
|
|
||||||
// Finally write the new configuration in the file
|
// Finally write the new configuration in the file
|
||||||
|
|||||||
@@ -14,79 +14,79 @@ const cases = [
|
|||||||
//
|
//
|
||||||
{
|
{
|
||||||
property: 'property',
|
property: 'property',
|
||||||
source: `export default {}`,
|
source: 'export default {}',
|
||||||
expected: `export default { property: "value" }`
|
expected: 'export default { property: "value" }'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'property',
|
property: 'property',
|
||||||
source: `export default { property: 0 }`, // property exists and is a number
|
source: 'export default { property: 0 }', // property exists and is a number
|
||||||
expected: `export default { property: "value" }`
|
expected: 'export default { property: "value" }'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'property',
|
property: 'property',
|
||||||
source: `export default { property: false }`, // property exists and is a boolean
|
source: 'export default { property: false }', // property exists and is a boolean
|
||||||
expected: `export default { property: "value" }`
|
expected: 'export default { property: "value" }'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'property',
|
property: 'property',
|
||||||
source: `export default { property: "test" }`, // property exists and is a string
|
source: 'export default { property: "test" }', // property exists and is a string
|
||||||
expected: `export default { property: "value" }`
|
expected: 'export default { property: "value" }'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'property',
|
property: 'property',
|
||||||
source: `export default { property: [1,2] }`, // property exists and is an array
|
source: 'export default { property: [1,2] }', // property exists and is an array
|
||||||
expected: `export default { property: "value" }`
|
expected: 'export default { property: "value" }'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'property',
|
property: 'property',
|
||||||
source: `export default { property: null }`, // property exists and is null
|
source: 'export default { property: null }', // property exists and is null
|
||||||
expected: `export default { property: "value" }`
|
expected: 'export default { property: "value" }'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'property',
|
property: 'property',
|
||||||
source: `export default { property: {}}`, // property exists and is an object
|
source: 'export default { property: { } }', // property exists and is an object
|
||||||
expected: `export default { property: "value" }`
|
expected: 'export default { property: "value" }'
|
||||||
},
|
},
|
||||||
|
|
||||||
// Deep properties (injection 1)
|
// Deep properties (injection 1)
|
||||||
{
|
{
|
||||||
property: 'property.b.c',
|
property: 'property.b.c',
|
||||||
source: `export default {}`,
|
source: 'export default {}',
|
||||||
expected: `export default { property: { b: { c: "value" }}}`
|
expected: 'export default { property: { b: { c: "value" } } }'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'property.b.c',
|
property: 'property.b.c',
|
||||||
source: `export default { property: 0 }`, // property exists and is a number
|
source: 'export default { property: 0 }', // property exists and is a number
|
||||||
expected: `export default { property: { b: { c: "value" }}}`
|
expected: 'export default { property: { b: { c: "value" } } }'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'property.b.c',
|
property: 'property.b.c',
|
||||||
source: `export default { property: {}}`, // property exists and is an object
|
source: 'export default { property: { } }', // property exists and is an object
|
||||||
expected: `export default { property: { b: { c: "value" }}}`
|
expected: 'export default { property: { b: { c: "value" } } }'
|
||||||
},
|
},
|
||||||
|
|
||||||
// Deep properties (injection 2)
|
// Deep properties (injection 2)
|
||||||
{
|
{
|
||||||
property: 'property.b.c',
|
property: 'property.b.c',
|
||||||
source: `export default { property: { b: 0 }}`, // property exists and is a number
|
source: 'export default { property: { b: 0 } }', // property exists and is a number
|
||||||
expected: `export default { property: { b: { c: "value" }}}`
|
expected: 'export default { property: { b: { c: "value" } } }'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'property.b.c',
|
property: 'property.b.c',
|
||||||
source: `export default { property: { b: {}}}`, // property exists and is an object
|
source: 'export default { property: { b: { } } }', // property exists and is an object
|
||||||
expected: `export default { property: { b: { c: "value" }}}`
|
expected: 'export default { property: { b: { c: "value" } } }'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'property.b.c',
|
property: 'property.b.c',
|
||||||
source: `export default { property: { b: { hello: 123}}}`, // property exists and is a non-empty object
|
source: 'export default { property: { b: { hello: 123 } } }', // property exists and is a non-empty object
|
||||||
expected: `export default { property: { b: { c: "value", hello: 123 }}}`
|
expected: 'export default { property: { b: { c: "value", hello: 123 } } }'
|
||||||
},
|
},
|
||||||
|
|
||||||
// Deep properties (existing properties)
|
// Deep properties (existing properties)
|
||||||
{
|
{
|
||||||
property: 'a1.a2',
|
property: 'a1.a2',
|
||||||
source: `export default { a2: false, a1: { a3: [12]}}`, // property exists and is a non-empty object
|
source: 'export default { a2: false, a1: { a3: [12] } }', // property exists and is a non-empty object
|
||||||
expected: `export default { a2: false, a1: { a2: "value", a3: [12]}}`
|
expected: 'export default { a2: false, a1: { a2: "value", a3: [12] } }'
|
||||||
},
|
},
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -94,23 +94,23 @@ const cases = [
|
|||||||
//
|
//
|
||||||
{
|
{
|
||||||
property: 'property',
|
property: 'property',
|
||||||
source: `const config = {}; export default config`,
|
source: 'const config = {}; export default config',
|
||||||
expected: `const config = { property: "value"}; export default config`
|
expected: 'const config = { property: "value"}; export default config'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'property',
|
property: 'property',
|
||||||
source: `var config = {}; export default config`,
|
source: 'var config = {}; export default config',
|
||||||
expected: `var config = { property: "value"}; export default config`
|
expected: 'var config = { property: "value"}; export default config'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'a.b.c',
|
property: 'a.b.c',
|
||||||
source: `var config = {}; export default config`,
|
source: 'var config = {}; export default config',
|
||||||
expected: `var config = { a: { b: { c: "value"}}}; export default config`
|
expected: 'var config = { a: { b: { c: "value" } } }; export default config'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'a.b.c',
|
property: 'a.b.c',
|
||||||
source: `var config = { a: { b: [], c: "hello"}}; export default config`,
|
source: 'var config = { a: { b: [], c: "hello" } }; export default config',
|
||||||
expected: `var config = { a: { b: { c: "value"}, c: "hello"}}; export default config`
|
expected: 'var config = { a: { b: { c: "value"}, c: "hello" } }; export default config'
|
||||||
},
|
},
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -118,18 +118,18 @@ const cases = [
|
|||||||
//
|
//
|
||||||
{
|
{
|
||||||
property: 'property',
|
property: 'property',
|
||||||
source: `module.exports = {}`,
|
source: 'module.exports = {}',
|
||||||
expected: `module.exports = { property: "value"}`
|
expected: 'module.exports = { property: "value"}'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'property',
|
property: 'property',
|
||||||
source: `module.exports = { p1: 0}`,
|
source: 'module.exports = { p1: 0}',
|
||||||
expected: `module.exports = { property: "value", p1: 0}`
|
expected: 'module.exports = { property: "value", p1: 0}'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'a.b.c',
|
property: 'a.b.c',
|
||||||
source: `module.exports = { p1: 0}`,
|
source: 'module.exports = { p1: 0}',
|
||||||
expected: `module.exports = { a: { b: { c: "value" }}, p1: 0}`
|
expected: 'module.exports = { a: { b: { c: "value" } }, p1: 0}'
|
||||||
},
|
},
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -137,23 +137,23 @@ const cases = [
|
|||||||
//
|
//
|
||||||
{
|
{
|
||||||
property: 'property',
|
property: 'property',
|
||||||
source: `const config = {}; module.exports = config`,
|
source: 'const config = {}; module.exports = config',
|
||||||
expected: `const config = { property: "value"}; module.exports = config`
|
expected: 'const config = { property: "value"}; module.exports = config'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'property',
|
property: 'property',
|
||||||
source: `var config = {}; module.exports = config`,
|
source: 'var config = {}; module.exports = config',
|
||||||
expected: `var config = { property: "value"}; module.exports = config`
|
expected: 'var config = { property: "value"}; module.exports = config'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'a.b.c',
|
property: 'a.b.c',
|
||||||
source: `var config = {}; module.exports = config`,
|
source: 'var config = {}; module.exports = config',
|
||||||
expected: `var config = { a: { b: { c: "value"}}}; module.exports = config`
|
expected: 'var config = { a: { b: { c: "value" } } }; module.exports = config'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'a.b.c',
|
property: 'a.b.c',
|
||||||
source: `var config = { a: { b: [], c: "hello"}}; module.exports = config`,
|
source: 'var config = { a: { b: [], c: "hello" } }; module.exports = config',
|
||||||
expected: `var config = { a: { b: { c: "value"}, c: "hello"}}; module.exports = config`
|
expected: 'var config = { a: { b: { c: "value"}, c: "hello" } }; module.exports = config'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
// Default Pages configuration for Gatsby
|
// Default Pages configuration for Gatsby
|
||||||
module.exports = { pathPrefix: '/docs/' }
|
module.exports = { siteMetadata: { siteUrl: 'https://configure-pages.github.io' }, pathPrefix: '/docs/' }
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
siteMetadata: {
|
siteMetadata: {
|
||||||
title: `My Gatsby Site`,
|
title: 'My Gatsby Site'
|
||||||
siteUrl: `https://www.yourdomain.tld`,
|
|
||||||
},
|
},
|
||||||
plugins: [],
|
plugins: []
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
pathPrefix: "/docs/",
|
pathPrefix: '/docs/',
|
||||||
siteMetadata: {
|
siteMetadata: {
|
||||||
title: `My Gatsby Site`,
|
siteUrl: 'https://configure-pages.github.io',
|
||||||
siteUrl: `https://www.yourdomain.tld`,
|
title: 'My Gatsby Site'
|
||||||
},
|
},
|
||||||
plugins: [],
|
plugins: []
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
pathPrefix: '/docs/',
|
pathPrefix: '/docs/',
|
||||||
siteMetadata: {
|
siteMetadata: {
|
||||||
title: `My Gatsby Site`,
|
siteUrl: 'https://configure-pages.github.io',
|
||||||
siteUrl: `https://www.yourdomain.tld`
|
title: 'My Gatsby Site'
|
||||||
},
|
},
|
||||||
plugins: []
|
plugins: []
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
export default {
|
export default {
|
||||||
pathPrefix: "/docs/",
|
pathPrefix: '/docs/',
|
||||||
siteMetadata: {
|
siteMetadata: {
|
||||||
title: `My Gatsby Site`,
|
siteUrl: 'https://configure-pages.github.io',
|
||||||
siteUrl: `https://www.yourdomain.tld`,
|
title: 'My Gatsby Site'
|
||||||
},
|
},
|
||||||
plugins: [],
|
plugins: []
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
siteMetadata: {
|
siteMetadata: {
|
||||||
title: `My Gatsby Site`,
|
title: 'My Gatsby Site'
|
||||||
siteUrl: `https://www.yourdomain.tld`
|
|
||||||
},
|
},
|
||||||
plugins: []
|
plugins: []
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
export default {
|
export default {
|
||||||
siteMetadata: {
|
siteMetadata: {
|
||||||
title: `My Gatsby Site`,
|
title: 'My Gatsby Site'
|
||||||
siteUrl: `https://www.yourdomain.tld`,
|
|
||||||
},
|
},
|
||||||
plugins: [],
|
plugins: []
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
/** @type {import('next').NextConfig} */
|
/** @type {import('next').NextConfig} */
|
||||||
const nextConfig = {
|
const nextConfig = {
|
||||||
reactStrictMode: true,
|
reactStrictMode: true,
|
||||||
swcMinify: true,
|
swcMinify: true
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = nextConfig
|
module.exports = nextConfig
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/** @type {import('next').NextConfig} */
|
/** @type {import('next').NextConfig} */
|
||||||
const nextConfig = {
|
const nextConfig = {
|
||||||
experimental: {images: {unoptimized: true}},
|
experimental: { images: { unoptimized: true } },
|
||||||
basePath: '/docs',
|
basePath: '/docs',
|
||||||
reactStrictMode: true,
|
reactStrictMode: true,
|
||||||
swcMinify: true
|
swcMinify: true
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/** @type {import('next').NextConfig} */
|
/** @type {import('next').NextConfig} */
|
||||||
const nextConfig = {
|
const nextConfig = {
|
||||||
experimental: {images: {unoptimized: true}},
|
experimental: { images: { unoptimized: true } },
|
||||||
basePath: '/docs',
|
basePath: '/docs',
|
||||||
reactStrictMode: true,
|
reactStrictMode: true,
|
||||||
swcMinify: true
|
swcMinify: true
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/** @type {import('next').NextConfig} */
|
/** @type {import('next').NextConfig} */
|
||||||
const nextConfig = {
|
const nextConfig = {
|
||||||
reactStrictMode: true,
|
reactStrictMode: true,
|
||||||
swcMinify: true,
|
swcMinify: true
|
||||||
}
|
}
|
||||||
|
|
||||||
export default nextConfig
|
export default nextConfig
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
const getAllDynamicRoute = async function() {
|
const getAllDynamicRoute = async function () {
|
||||||
const routes = await (async () => {
|
const routes = await (async () => {
|
||||||
return ['/posts/hello-world', '/posts/hello-again'];
|
return ['/posts/hello-world', '/posts/hello-again']
|
||||||
})();
|
})()
|
||||||
return routes;
|
return routes
|
||||||
};
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
mode: 'universal',
|
mode: 'universal',
|
||||||
generate: {
|
generate: {
|
||||||
async routes () {
|
async routes() {
|
||||||
return getAllDynamicRoute();
|
return getAllDynamicRoute()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
const getAllDynamicRoute = async function() {
|
const getAllDynamicRoute = async function () {
|
||||||
const routes = await (async () => {
|
const routes = await (async () => {
|
||||||
return ['/posts/hello-world', '/posts/hello-again'];
|
return ['/posts/hello-world', '/posts/hello-again']
|
||||||
})();
|
})()
|
||||||
return routes;
|
return routes
|
||||||
};
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
target: 'static',
|
target: 'static',
|
||||||
router: {base: '/docs/'},
|
router: { base: '/docs/' },
|
||||||
mode: 'universal',
|
mode: 'universal',
|
||||||
generate: {
|
generate: {
|
||||||
async routes () {
|
async routes() {
|
||||||
return getAllDynamicRoute();
|
return getAllDynamicRoute()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
const getAllDynamicRoute = async function() {
|
const getAllDynamicRoute = async function () {
|
||||||
const routes = await (async () => {
|
const routes = await (async () => {
|
||||||
return ['/posts/hello-world', '/posts/hello-again'];
|
return ['/posts/hello-world', '/posts/hello-again']
|
||||||
})();
|
})()
|
||||||
return routes;
|
return routes
|
||||||
};
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
target: 'static',
|
target: 'static',
|
||||||
router: {base: '/docs/'},
|
router: { base: '/docs/' },
|
||||||
mode: 'universal',
|
mode: 'universal',
|
||||||
generate: {
|
generate: {
|
||||||
async routes () {
|
async routes() {
|
||||||
return getAllDynamicRoute();
|
return getAllDynamicRoute()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
const getAllDynamicRoute = async function() {
|
const getAllDynamicRoute = async function () {
|
||||||
const routes = await (async () => {
|
const routes = await (async () => {
|
||||||
return ['/posts/hello-world', '/posts/hello-again'];
|
return ['/posts/hello-world', '/posts/hello-again']
|
||||||
})();
|
})()
|
||||||
return routes;
|
return routes
|
||||||
};
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
mode: 'universal',
|
mode: 'universal',
|
||||||
generate: {
|
generate: {
|
||||||
async routes () {
|
async routes() {
|
||||||
return getAllDynamicRoute();
|
return getAllDynamicRoute()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|||||||
@@ -14,31 +14,24 @@ module.exports = {
|
|||||||
{ hid: 'description', name: 'description', content: '' },
|
{ hid: 'description', name: 'description', content: '' },
|
||||||
{ name: 'format-detection', content: 'telephone=no' }
|
{ name: 'format-detection', content: 'telephone=no' }
|
||||||
],
|
],
|
||||||
link: [
|
link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }]
|
||||||
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// Global CSS: https://go.nuxtjs.dev/config-css
|
// Global CSS: https://go.nuxtjs.dev/config-css
|
||||||
css: [
|
css: [],
|
||||||
],
|
|
||||||
|
|
||||||
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
|
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
|
||||||
plugins: [
|
plugins: [],
|
||||||
],
|
|
||||||
|
|
||||||
// Auto import components: https://go.nuxtjs.dev/config-components
|
// Auto import components: https://go.nuxtjs.dev/config-components
|
||||||
components: true,
|
components: true,
|
||||||
|
|
||||||
// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
|
// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
|
||||||
buildModules: [
|
buildModules: [],
|
||||||
],
|
|
||||||
|
|
||||||
// Modules: https://go.nuxtjs.dev/config-modules
|
// Modules: https://go.nuxtjs.dev/config-modules
|
||||||
modules: [
|
modules: [],
|
||||||
],
|
|
||||||
|
|
||||||
// Build Configuration: https://go.nuxtjs.dev/config-build
|
// Build Configuration: https://go.nuxtjs.dev/config-build
|
||||||
build: {
|
build: {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
// Disable server-side rendering: https://go.nuxtjs.dev/ssr-mode
|
// Disable server-side rendering: https://go.nuxtjs.dev/ssr-mode
|
||||||
target: 'static',
|
target: 'static',
|
||||||
router: { base: "/docs/" },
|
router: { base: '/docs/' },
|
||||||
ssr: false,
|
ssr: false,
|
||||||
|
|
||||||
// Global page headers: https://go.nuxtjs.dev/config-head
|
// Global page headers: https://go.nuxtjs.dev/config-head
|
||||||
@@ -16,31 +16,24 @@ module.exports = {
|
|||||||
{ hid: 'description', name: 'description', content: '' },
|
{ hid: 'description', name: 'description', content: '' },
|
||||||
{ name: 'format-detection', content: 'telephone=no' }
|
{ name: 'format-detection', content: 'telephone=no' }
|
||||||
],
|
],
|
||||||
link: [
|
link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }]
|
||||||
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// Global CSS: https://go.nuxtjs.dev/config-css
|
// Global CSS: https://go.nuxtjs.dev/config-css
|
||||||
css: [
|
css: [],
|
||||||
],
|
|
||||||
|
|
||||||
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
|
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
|
||||||
plugins: [
|
plugins: [],
|
||||||
],
|
|
||||||
|
|
||||||
// Auto import components: https://go.nuxtjs.dev/config-components
|
// Auto import components: https://go.nuxtjs.dev/config-components
|
||||||
components: true,
|
components: true,
|
||||||
|
|
||||||
// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
|
// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
|
||||||
buildModules: [
|
buildModules: [],
|
||||||
],
|
|
||||||
|
|
||||||
// Modules: https://go.nuxtjs.dev/config-modules
|
// Modules: https://go.nuxtjs.dev/config-modules
|
||||||
modules: [
|
modules: [],
|
||||||
],
|
|
||||||
|
|
||||||
// Build Configuration: https://go.nuxtjs.dev/config-build
|
// Build Configuration: https://go.nuxtjs.dev/config-build
|
||||||
build: {
|
build: {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
export default {
|
export default {
|
||||||
// Disable server-side rendering: https://go.nuxtjs.dev/ssr-mode
|
// Disable server-side rendering: https://go.nuxtjs.dev/ssr-mode
|
||||||
target: 'static',
|
target: 'static',
|
||||||
router: { base: "/docs/" },
|
router: { base: '/docs/' },
|
||||||
ssr: false,
|
ssr: false,
|
||||||
|
|
||||||
// Global page headers: https://go.nuxtjs.dev/config-head
|
// Global page headers: https://go.nuxtjs.dev/config-head
|
||||||
@@ -16,31 +16,24 @@ export default {
|
|||||||
{ hid: 'description', name: 'description', content: '' },
|
{ hid: 'description', name: 'description', content: '' },
|
||||||
{ name: 'format-detection', content: 'telephone=no' }
|
{ name: 'format-detection', content: 'telephone=no' }
|
||||||
],
|
],
|
||||||
link: [
|
link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }]
|
||||||
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// Global CSS: https://go.nuxtjs.dev/config-css
|
// Global CSS: https://go.nuxtjs.dev/config-css
|
||||||
css: [
|
css: [],
|
||||||
],
|
|
||||||
|
|
||||||
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
|
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
|
||||||
plugins: [
|
plugins: [],
|
||||||
],
|
|
||||||
|
|
||||||
// Auto import components: https://go.nuxtjs.dev/config-components
|
// Auto import components: https://go.nuxtjs.dev/config-components
|
||||||
components: true,
|
components: true,
|
||||||
|
|
||||||
// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
|
// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
|
||||||
buildModules: [
|
buildModules: [],
|
||||||
],
|
|
||||||
|
|
||||||
// Modules: https://go.nuxtjs.dev/config-modules
|
// Modules: https://go.nuxtjs.dev/config-modules
|
||||||
modules: [
|
modules: [],
|
||||||
],
|
|
||||||
|
|
||||||
// Build Configuration: https://go.nuxtjs.dev/config-build
|
// Build Configuration: https://go.nuxtjs.dev/config-build
|
||||||
build: {
|
build: {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -14,31 +14,24 @@ export default {
|
|||||||
{ hid: 'description', name: 'description', content: '' },
|
{ hid: 'description', name: 'description', content: '' },
|
||||||
{ name: 'format-detection', content: 'telephone=no' }
|
{ name: 'format-detection', content: 'telephone=no' }
|
||||||
],
|
],
|
||||||
link: [
|
link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }]
|
||||||
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// Global CSS: https://go.nuxtjs.dev/config-css
|
// Global CSS: https://go.nuxtjs.dev/config-css
|
||||||
css: [
|
css: [],
|
||||||
],
|
|
||||||
|
|
||||||
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
|
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
|
||||||
plugins: [
|
plugins: [],
|
||||||
],
|
|
||||||
|
|
||||||
// Auto import components: https://go.nuxtjs.dev/config-components
|
// Auto import components: https://go.nuxtjs.dev/config-components
|
||||||
components: true,
|
components: true,
|
||||||
|
|
||||||
// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
|
// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
|
||||||
buildModules: [
|
buildModules: [],
|
||||||
],
|
|
||||||
|
|
||||||
// Modules: https://go.nuxtjs.dev/config-modules
|
// Modules: https://go.nuxtjs.dev/config-modules
|
||||||
modules: [
|
modules: [],
|
||||||
],
|
|
||||||
|
|
||||||
// Build Configuration: https://go.nuxtjs.dev/config-build
|
// Build Configuration: https://go.nuxtjs.dev/config-build
|
||||||
build: {
|
build: {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,7 @@ import adapter from '@sveltejs/adapter-auto'
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
kit: {
|
kit: {
|
||||||
|
prerender: { origin: 'https://configure-pages.github.io' },
|
||||||
paths: { base: '/docs' },
|
paths: { base: '/docs' },
|
||||||
adapter: adapter()
|
adapter: adapter()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import adapter from '@sveltejs/adapter-auto'
|
|||||||
/** @type {import('@sveltejs/kit').Config} */
|
/** @type {import('@sveltejs/kit').Config} */
|
||||||
const config = {
|
const config = {
|
||||||
kit: {
|
kit: {
|
||||||
|
prerender: { origin: 'https://configure-pages.github.io' },
|
||||||
paths: { base: '/docs' },
|
paths: { base: '/docs' },
|
||||||
adapter: adapter()
|
adapter: adapter()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ const core = require('@actions/core')
|
|||||||
const { getContext } = require('./context')
|
const { getContext } = require('./context')
|
||||||
|
|
||||||
const { findOrCreatePagesSite } = require('./api-client')
|
const { findOrCreatePagesSite } = require('./api-client')
|
||||||
const { setPagesPath } = require('./set-pages-path')
|
const { setPagesConfig } = require('./set-pages-config')
|
||||||
const outputPagesBaseUrl = require('./output-pages-base-url')
|
const outputPagesBaseUrl = require('./output-pages-base-url')
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
@@ -15,7 +15,7 @@ async function main() {
|
|||||||
const siteUrl = new URL(pageObject.html_url)
|
const siteUrl = new URL(pageObject.html_url)
|
||||||
|
|
||||||
if (staticSiteGenerator) {
|
if (staticSiteGenerator) {
|
||||||
setPagesPath({ staticSiteGenerator, generatorConfigFile, path: siteUrl.pathname })
|
setPagesConfig({ staticSiteGenerator, generatorConfigFile, siteUrl })
|
||||||
}
|
}
|
||||||
outputPagesBaseUrl(siteUrl)
|
outputPagesBaseUrl(siteUrl)
|
||||||
core.exportVariable('GITHUB_PAGES', 'true')
|
core.exportVariable('GITHUB_PAGES', 'true')
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
const core = require('@actions/core')
|
const core = require('@actions/core')
|
||||||
|
const removeTrailingSlash = require('./remove-trailing-slash')
|
||||||
|
|
||||||
function outputPagesBaseUrl(siteUrl) {
|
function outputPagesBaseUrl(siteUrl) {
|
||||||
core.setOutput('base_url', siteUrl.href)
|
// Many static site generators do not want the trailing slash, and it is much easier to add than remove in a workflow
|
||||||
|
const baseUrl = removeTrailingSlash(siteUrl.href)
|
||||||
|
const basePath = removeTrailingSlash(siteUrl.pathname)
|
||||||
|
|
||||||
|
core.setOutput('base_url', baseUrl)
|
||||||
core.setOutput('origin', siteUrl.origin)
|
core.setOutput('origin', siteUrl.origin)
|
||||||
core.setOutput('host', siteUrl.host)
|
core.setOutput('host', siteUrl.host)
|
||||||
core.setOutput('base_path', siteUrl.pathname)
|
core.setOutput('base_path', basePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = outputPagesBaseUrl
|
module.exports = outputPagesBaseUrl
|
||||||
|
|||||||
@@ -23,10 +23,10 @@ describe('outputPagesBaseUrl', () => {
|
|||||||
|
|
||||||
outputPagesBaseUrl(new URL(baseUrl))
|
outputPagesBaseUrl(new URL(baseUrl))
|
||||||
|
|
||||||
expect(core.setOutput).toHaveBeenCalledWith('base_url', baseUrl)
|
expect(core.setOutput).toHaveBeenCalledWith('base_url', 'https://octocat.github.io')
|
||||||
expect(core.setOutput).toHaveBeenCalledWith('origin', 'https://octocat.github.io')
|
expect(core.setOutput).toHaveBeenCalledWith('origin', 'https://octocat.github.io')
|
||||||
expect(core.setOutput).toHaveBeenCalledWith('host', 'octocat.github.io')
|
expect(core.setOutput).toHaveBeenCalledWith('host', 'octocat.github.io')
|
||||||
expect(core.setOutput).toHaveBeenCalledWith('base_path', '/')
|
expect(core.setOutput).toHaveBeenCalledWith('base_path', '')
|
||||||
})
|
})
|
||||||
|
|
||||||
it('gets expected outputs for project site', async () => {
|
it('gets expected outputs for project site', async () => {
|
||||||
@@ -34,10 +34,10 @@ describe('outputPagesBaseUrl', () => {
|
|||||||
|
|
||||||
outputPagesBaseUrl(new URL(baseUrl))
|
outputPagesBaseUrl(new URL(baseUrl))
|
||||||
|
|
||||||
expect(core.setOutput).toHaveBeenCalledWith('base_url', baseUrl)
|
expect(core.setOutput).toHaveBeenCalledWith('base_url', 'https://octocat.github.io/my-repo')
|
||||||
expect(core.setOutput).toHaveBeenCalledWith('origin', 'https://octocat.github.io')
|
expect(core.setOutput).toHaveBeenCalledWith('origin', 'https://octocat.github.io')
|
||||||
expect(core.setOutput).toHaveBeenCalledWith('host', 'octocat.github.io')
|
expect(core.setOutput).toHaveBeenCalledWith('host', 'octocat.github.io')
|
||||||
expect(core.setOutput).toHaveBeenCalledWith('base_path', '/my-repo/')
|
expect(core.setOutput).toHaveBeenCalledWith('base_path', '/my-repo')
|
||||||
})
|
})
|
||||||
|
|
||||||
it('gets expected outputs for site with custom domain name', async () => {
|
it('gets expected outputs for site with custom domain name', async () => {
|
||||||
@@ -45,9 +45,9 @@ describe('outputPagesBaseUrl', () => {
|
|||||||
|
|
||||||
outputPagesBaseUrl(new URL(baseUrl))
|
outputPagesBaseUrl(new URL(baseUrl))
|
||||||
|
|
||||||
expect(core.setOutput).toHaveBeenCalledWith('base_url', baseUrl)
|
expect(core.setOutput).toHaveBeenCalledWith('base_url', 'https://www.example.com')
|
||||||
expect(core.setOutput).toHaveBeenCalledWith('origin', 'https://www.example.com')
|
expect(core.setOutput).toHaveBeenCalledWith('origin', 'https://www.example.com')
|
||||||
expect(core.setOutput).toHaveBeenCalledWith('host', 'www.example.com')
|
expect(core.setOutput).toHaveBeenCalledWith('host', 'www.example.com')
|
||||||
expect(core.setOutput).toHaveBeenCalledWith('base_path', '/')
|
expect(core.setOutput).toHaveBeenCalledWith('base_path', '')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
3
src/remove-trailing-slash.js
Normal file
3
src/remove-trailing-slash.js
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
module.exports = function removeTrailingSlash(str) {
|
||||||
|
return str.endsWith('/') ? str.slice(0, -1) : str
|
||||||
|
}
|
||||||
@@ -1,9 +1,12 @@
|
|||||||
const core = require('@actions/core')
|
const core = require('@actions/core')
|
||||||
const { ConfigParser } = require('./config-parser')
|
const { ConfigParser } = require('./config-parser')
|
||||||
|
const removeTrailingSlash = require('./remove-trailing-slash')
|
||||||
|
|
||||||
// Return the settings to be passed to a {ConfigParser} for a given static site generator,
|
// Return the settings to be passed to a {ConfigParser} for a given static site generator,
|
||||||
// optional configuration file path, and a Pages path value to inject
|
// optional configuration file path, and a Pages siteUrl value to inject
|
||||||
function getConfigParserSettings({ staticSiteGenerator, generatorConfigFile, path }) {
|
function getConfigParserSettings({ staticSiteGenerator, generatorConfigFile, siteUrl }) {
|
||||||
|
let { pathname: path, origin } = siteUrl
|
||||||
|
|
||||||
switch (staticSiteGenerator) {
|
switch (staticSiteGenerator) {
|
||||||
case 'nuxt':
|
case 'nuxt':
|
||||||
return {
|
return {
|
||||||
@@ -20,9 +23,7 @@ function getConfigParserSettings({ staticSiteGenerator, generatorConfigFile, pat
|
|||||||
}
|
}
|
||||||
case 'next':
|
case 'next':
|
||||||
// Next does not want a trailing slash
|
// Next does not want a trailing slash
|
||||||
if (path.endsWith('/')) {
|
path = removeTrailingSlash(path)
|
||||||
path = path.slice(0, -1)
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
configurationFile: generatorConfigFile || './next.config.js',
|
configurationFile: generatorConfigFile || './next.config.js',
|
||||||
@@ -42,21 +43,23 @@ function getConfigParserSettings({ staticSiteGenerator, generatorConfigFile, pat
|
|||||||
blankConfigurationFile: `${__dirname}/blank-configurations/gatsby.js`,
|
blankConfigurationFile: `${__dirname}/blank-configurations/gatsby.js`,
|
||||||
properties: {
|
properties: {
|
||||||
// Configure a path prefix
|
// Configure a path prefix
|
||||||
pathPrefix: path
|
pathPrefix: path,
|
||||||
|
// Configure a site url
|
||||||
|
'siteMetadata.siteUrl': origin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 'sveltekit':
|
case 'sveltekit':
|
||||||
// SvelteKit does not want a trailing slash
|
// SvelteKit does not want a trailing slash
|
||||||
if (path.endsWith('/')) {
|
path = removeTrailingSlash(path)
|
||||||
path = path.slice(0, -1)
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
configurationFile: generatorConfigFile || './svelte.config.js',
|
configurationFile: generatorConfigFile || './svelte.config.js',
|
||||||
blankConfigurationFile: `${__dirname}/blank-configurations/sveltekit.js`,
|
blankConfigurationFile: `${__dirname}/blank-configurations/sveltekit.js`,
|
||||||
properties: {
|
properties: {
|
||||||
// Configure a base path
|
// Configure a base path
|
||||||
'kit.paths.base': path
|
'kit.paths.base': path,
|
||||||
|
// Configure a prerender origin
|
||||||
|
'kit.prerender.origin': origin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@@ -65,18 +68,18 @@ function getConfigParserSettings({ staticSiteGenerator, generatorConfigFile, pat
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Inject Pages configuration in a given static site generator's configuration file
|
// Inject Pages configuration in a given static site generator's configuration file
|
||||||
function setPagesPath({ staticSiteGenerator, generatorConfigFile, path }) {
|
function setPagesConfig({ staticSiteGenerator, generatorConfigFile, siteUrl }) {
|
||||||
try {
|
try {
|
||||||
// Parse the configuration file and try to inject the Pages configuration in it
|
// Parse the configuration file and try to inject the Pages configuration in it
|
||||||
const settings = getConfigParserSettings({ staticSiteGenerator, generatorConfigFile, path })
|
const settings = getConfigParserSettings({ staticSiteGenerator, generatorConfigFile, siteUrl })
|
||||||
new ConfigParser(settings).injectAll()
|
new ConfigParser(settings).injectAll()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// Logging
|
// Logging
|
||||||
core.warning(
|
core.warning(
|
||||||
`We were unable to determine how to inject the site metadata into your config. Generated URLs may be incorrect. The base URL for this site should be ${path}. Please ensure your framework is configured to generate relative links appropriately.`,
|
`We were unable to determine how to inject the site metadata into your config. Generated URLs may be incorrect. The base URL for this site should be ${siteUrl}. Please ensure your framework is configured to generate relative links appropriately.`,
|
||||||
error
|
error
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = { getConfigParserSettings, setPagesPath }
|
module.exports = { getConfigParserSettings, setPagesConfig }
|
||||||
@@ -2,7 +2,7 @@ const fs = require('fs')
|
|||||||
const path = require('path')
|
const path = require('path')
|
||||||
const core = require('@actions/core')
|
const core = require('@actions/core')
|
||||||
|
|
||||||
const { getConfigParserSettings } = require('./set-pages-path')
|
const { getConfigParserSettings } = require('./set-pages-config')
|
||||||
const { ConfigParser } = require('./config-parser')
|
const { ConfigParser } = require('./config-parser')
|
||||||
const { getTempFolder, compareFiles } = require('./test-helpers')
|
const { getTempFolder, compareFiles } = require('./test-helpers')
|
||||||
|
|
||||||
@@ -32,6 +32,9 @@ describe('configParser', () => {
|
|||||||
// Get fixture files, excluding expected results
|
// Get fixture files, excluding expected results
|
||||||
const configurationFiles = fs.readdirSync(fixtureFolder).filter(filename => !filename.includes('.expected.'))
|
const configurationFiles = fs.readdirSync(fixtureFolder).filter(filename => !filename.includes('.expected.'))
|
||||||
|
|
||||||
|
// Create test siteUrl
|
||||||
|
const siteUrl = new URL('https://configure-pages.github.io/docs/')
|
||||||
|
|
||||||
// Iterate over the fixtures, outputting to default configuration file path
|
// Iterate over the fixtures, outputting to default configuration file path
|
||||||
const defaultFileExtension = '.js'
|
const defaultFileExtension = '.js'
|
||||||
configurationFiles
|
configurationFiles
|
||||||
@@ -48,7 +51,7 @@ describe('configParser', () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get settings for the static site generator
|
// Get settings for the static site generator
|
||||||
const settings = getConfigParserSettings({ staticSiteGenerator, path: '/docs/' })
|
const settings = getConfigParserSettings({ staticSiteGenerator, siteUrl })
|
||||||
// Update the settings
|
// Update the settings
|
||||||
settings.configurationFile = fixtureTargetFile
|
settings.configurationFile = fixtureTargetFile
|
||||||
// Do the injection
|
// Do the injection
|
||||||
@@ -84,7 +87,7 @@ describe('configParser', () => {
|
|||||||
const settings = getConfigParserSettings({
|
const settings = getConfigParserSettings({
|
||||||
staticSiteGenerator,
|
staticSiteGenerator,
|
||||||
generatorConfigFile: fixtureTargetFile,
|
generatorConfigFile: fixtureTargetFile,
|
||||||
path: '/docs/'
|
siteUrl
|
||||||
})
|
})
|
||||||
|
|
||||||
// Do the injection
|
// Do the injection
|
||||||
Reference in New Issue
Block a user