mirror of
https://github.com/LukeHagar/vercel.git
synced 2025-12-11 12:57:46 +00:00
Compare commits
70 Commits
@vercel/bu
...
@vercel/py
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
703b2649bc | ||
|
|
2497909d9b | ||
|
|
0ad45c8b13 | ||
|
|
9acf8e1737 | ||
|
|
f5f07c5d15 | ||
|
|
c0d22cf78d | ||
|
|
c9811225ad | ||
|
|
68eeb6a5bd | ||
|
|
ec10f326c1 | ||
|
|
cfae7ec3c2 | ||
|
|
85b253cdd0 | ||
|
|
a6e4f8d8bb | ||
|
|
9c7e27b551 | ||
|
|
60b882c493 | ||
|
|
21072b1f1f | ||
|
|
a186ad643a | ||
|
|
4c0055eaf0 | ||
|
|
910a905192 | ||
|
|
156a9be06e | ||
|
|
e2132ee36d | ||
|
|
4572230c1d | ||
|
|
8cfac4cf86 | ||
|
|
4f20783000 | ||
|
|
968b7c3fb5 | ||
|
|
407c4ec5f4 | ||
|
|
bcf393d125 | ||
|
|
115ae0a229 | ||
|
|
d149489c9e | ||
|
|
5b2e6052fc | ||
|
|
38cb5a3b99 | ||
|
|
84e828a0ca | ||
|
|
157ce5346d | ||
|
|
0256157391 | ||
|
|
a45b3d0982 | ||
|
|
26af6dbc03 | ||
|
|
38130103a0 | ||
|
|
978485818a | ||
|
|
0270784cbb | ||
|
|
345e514924 | ||
|
|
df62ec6ed0 | ||
|
|
f7f81fb896 | ||
|
|
a210c6e4f0 | ||
|
|
50080e4b92 | ||
|
|
5845bebe2d | ||
|
|
3e18146846 | ||
|
|
dbde60f47f | ||
|
|
aa3db23cad | ||
|
|
60a5b0a586 | ||
|
|
8b682ccc41 | ||
|
|
50055963af | ||
|
|
43fa6e6d97 | ||
|
|
98c0b9b573 | ||
|
|
8b8541f4aa | ||
|
|
59cc2bf0f2 | ||
|
|
30e078062f | ||
|
|
4d015a60ef | ||
|
|
ad0e66242d | ||
|
|
044f956de2 | ||
|
|
d26ed43d26 | ||
|
|
84d859a016 | ||
|
|
9238687089 | ||
|
|
212c91cf32 | ||
|
|
48b34f5b02 | ||
|
|
b2c72538a3 | ||
|
|
57d8702188 | ||
|
|
9a72195d8a | ||
|
|
29ab7f7cfb | ||
|
|
ffa36c12d5 | ||
|
|
d1fc729d31 | ||
|
|
ba47ad00f9 |
@@ -5,36 +5,36 @@ examples
|
|||||||
# gatsby-plugin-now
|
# gatsby-plugin-now
|
||||||
packages/gatsby-plugin-now/test/fixtures
|
packages/gatsby-plugin-now/test/fixtures
|
||||||
|
|
||||||
# now-build-utils
|
# build-utils
|
||||||
packages/now-build-utils/test/fixtures
|
packages/build-utils/test/fixtures
|
||||||
|
|
||||||
# now-cli
|
# cli
|
||||||
packages/now-cli/@types
|
packages/cli/@types
|
||||||
packages/now-cli/download
|
packages/cli/download
|
||||||
packages/now-cli/dist
|
packages/cli/dist
|
||||||
packages/now-cli/test/fixtures
|
packages/cli/test/fixtures
|
||||||
packages/now-cli/test/dev/fixtures
|
packages/cli/test/dev/fixtures
|
||||||
packages/now-cli/bin
|
packages/cli/bin
|
||||||
packages/now-cli/link
|
packages/cli/link
|
||||||
packages/now-cli/src/util/dev/templates/*.ts
|
packages/cli/src/util/dev/templates/*.ts
|
||||||
|
|
||||||
# now-client
|
# client
|
||||||
packages/now-client/tests/fixtures
|
packages/client/tests/fixtures
|
||||||
packages/now-client/lib
|
packages/client/lib
|
||||||
|
|
||||||
# now-next
|
# next
|
||||||
packages/now-next/test/fixtures
|
packages/next/test/fixtures
|
||||||
|
|
||||||
# now-node
|
# node
|
||||||
packages/now-node/src/bridge.ts
|
packages/node/src/bridge.ts
|
||||||
packages/now-node/test/fixtures
|
packages/node/test/fixtures
|
||||||
|
|
||||||
# now-node-bridge
|
# node-bridge
|
||||||
packages/now-node-bridge/bridge.*
|
packages/node-bridge/bridge.*
|
||||||
|
|
||||||
# now-static-build
|
# static-build
|
||||||
packages/now-static-build/test/fixtures
|
packages/static-build/test/fixtures
|
||||||
packages/now-static-build/test/build-fixtures
|
packages/static-build/test/build-fixtures
|
||||||
|
|
||||||
# redwood
|
# redwood
|
||||||
packages/redwood/test/fixtures
|
packages/redwood/test/fixtures
|
||||||
|
|||||||
30
.github/CODEOWNERS
vendored
30
.github/CODEOWNERS
vendored
@@ -4,21 +4,21 @@
|
|||||||
* @TooTallNate
|
* @TooTallNate
|
||||||
/.github/workflows @AndyBitz @styfle
|
/.github/workflows @AndyBitz @styfle
|
||||||
/packages/frameworks @AndyBitz
|
/packages/frameworks @AndyBitz
|
||||||
/packages/now-cli/src/commands/dev @TooTallNate @styfle @AndyBitz
|
/packages/cli/src/commands/dev @TooTallNate @styfle @AndyBitz
|
||||||
/packages/now-cli/src/util/dev @TooTallNate @styfle @AndyBitz
|
/packages/cli/src/util/dev @TooTallNate @styfle @AndyBitz
|
||||||
/packages/now-cli/src/commands/domains @javivelasco @mglagola @anatrajkovska
|
/packages/cli/src/commands/domains @javivelasco @mglagola @anatrajkovska
|
||||||
/packages/now-cli/src/commands/certs @javivelasco @mglagola @anatrajkovska
|
/packages/cli/src/commands/certs @javivelasco @mglagola @anatrajkovska
|
||||||
/packages/now-cli/src/commands/env @styfle @lucleray
|
/packages/cli/src/commands/env @styfle @lucleray
|
||||||
/packages/now-client @rdev @styfle @TooTallNate
|
/packages/client @rdev @styfle @TooTallNate
|
||||||
/packages/now-build-utils @styfle @AndyBitz @TooTallNate
|
/packages/build-utils @styfle @AndyBitz @TooTallNate
|
||||||
/packages/now-node @styfle @TooTallNate @lucleray
|
/packages/node @styfle @TooTallNate @lucleray
|
||||||
/packages/now-node-bridge @styfle @TooTallNate @lucleray
|
/packages/node-bridge @styfle @TooTallNate @lucleray
|
||||||
/packages/now-next @Timer @ijjk
|
/packages/next @Timer @ijjk
|
||||||
/packages/now-go @styfle @TooTallNate
|
/packages/go @styfle @TooTallNate
|
||||||
/packages/now-python @styfle @TooTallNate
|
/packages/python @styfle @TooTallNate
|
||||||
/packages/now-ruby @styfle @coetry @TooTallNate
|
/packages/ruby @styfle @coetry @TooTallNate
|
||||||
/packages/now-static-build @styfle @AndyBitz
|
/packages/static-build @styfle @AndyBitz
|
||||||
/packages/now-routing-utils @styfle @dav-is @ijjk
|
/packages/routing-utils @styfle @dav-is @ijjk
|
||||||
/examples @mcsdevv @timothyis
|
/examples @mcsdevv @timothyis
|
||||||
/examples/create-react-app @Timer
|
/examples/create-react-app @Timer
|
||||||
/examples/nextjs @timneutkens @Timer
|
/examples/nextjs @timneutkens @Timer
|
||||||
|
|||||||
2
.github/CONTRIBUTING.md
vendored
2
.github/CONTRIBUTING.md
vendored
@@ -88,7 +88,7 @@ When you run this script, you'll see all imported files. If anything file is mis
|
|||||||
|
|
||||||
Sometimes you want to test changes to a Builder against an existing project, maybe with `vercel dev` or an actual deployment. You can avoid publishing every Builder change to npm by uploading the Builder as a tarball.
|
Sometimes you want to test changes to a Builder against an existing project, maybe with `vercel dev` or an actual deployment. You can avoid publishing every Builder change to npm by uploading the Builder as a tarball.
|
||||||
|
|
||||||
1. Change directory to the desired Builder `cd ./packages/now-node`
|
1. Change directory to the desired Builder `cd ./packages/node`
|
||||||
2. Run `yarn build` to compile typescript and other build steps
|
2. Run `yarn build` to compile typescript and other build steps
|
||||||
3. Run `npm pack` to create a tarball file
|
3. Run `npm pack` to create a tarball file
|
||||||
4. Run `vercel *.tgz` to upload the tarball file and get a URL
|
4. Run `vercel *.tgz` to upload the tarball file and get a URL
|
||||||
|
|||||||
9
.github/workflows/publish.yml
vendored
9
.github/workflows/publish.yml
vendored
@@ -12,12 +12,15 @@ jobs:
|
|||||||
name: Publish
|
name: Publish
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/setup-go@v2
|
||||||
- uses: actions/setup-node@v1
|
with:
|
||||||
|
go-version: '1.13.15'
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
with:
|
with:
|
||||||
node-version: 12
|
node-version: 12
|
||||||
|
- uses: actions/checkout@v1
|
||||||
- name: Install
|
- name: Install
|
||||||
run: yarn install --check-files --frozen-lockfile
|
run: yarn install --check-files --frozen-lockfile --network-timeout 1000000
|
||||||
- name: Build
|
- name: Build
|
||||||
run: yarn build
|
run: yarn build
|
||||||
env:
|
env:
|
||||||
|
|||||||
13
.github/workflows/test-integration-cli.yml
vendored
13
.github/workflows/test-integration-cli.yml
vendored
@@ -16,9 +16,15 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest]
|
os: [ubuntu-latest]
|
||||||
node: [10, 12]
|
node: [12]
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
|
- uses: actions/setup-go@v2
|
||||||
|
with:
|
||||||
|
go-version: '1.13.15'
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node }}
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
fetch-depth: 100
|
fetch-depth: 100
|
||||||
@@ -26,11 +32,8 @@ jobs:
|
|||||||
- run: git fetch origin master --depth=100
|
- run: git fetch origin master --depth=100
|
||||||
- run: git fetch origin ${{ github.ref }} --depth=100
|
- run: git fetch origin ${{ github.ref }} --depth=100
|
||||||
- run: git diff origin/master...HEAD --name-only
|
- run: git diff origin/master...HEAD --name-only
|
||||||
- run: yarn install
|
- run: yarn install --network-timeout 1000000
|
||||||
- run: yarn run build
|
- run: yarn run build
|
||||||
- uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: ${{ matrix.node }}
|
|
||||||
- run: yarn test-integration-cli --clean false
|
- run: yarn test-integration-cli --clean false
|
||||||
env:
|
env:
|
||||||
VERCEL_TEAM_TOKEN: ${{ secrets.VERCEL_TEAM_TOKEN }}
|
VERCEL_TEAM_TOKEN: ${{ secrets.VERCEL_TEAM_TOKEN }}
|
||||||
|
|||||||
15
.github/workflows/test-integration-dev.yml
vendored
15
.github/workflows/test-integration-dev.yml
vendored
@@ -16,9 +16,15 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, macos-latest]
|
os: [ubuntu-latest, macos-latest]
|
||||||
node: [10, 12]
|
node: [12]
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
|
- uses: actions/setup-go@v2
|
||||||
|
with:
|
||||||
|
go-version: '1.13.15'
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node }}
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
fetch-depth: 100
|
fetch-depth: 100
|
||||||
@@ -28,12 +34,9 @@ jobs:
|
|||||||
- run: git diff origin/master...HEAD --name-only
|
- run: git diff origin/master...HEAD --name-only
|
||||||
- name: Install Hugo
|
- name: Install Hugo
|
||||||
if: matrix.os == 'macos-latest'
|
if: matrix.os == 'macos-latest'
|
||||||
run: curl -L -O https://github.com/gohugoio/hugo/releases/download/v0.56.0/hugo_0.56.0_macOS-64bit.tar.gz && tar -xzf hugo_0.56.0_macOS-64bit.tar.gz && mv ./hugo packages/now-cli/test/dev/fixtures/08-hugo/
|
run: curl -L -O https://github.com/gohugoio/hugo/releases/download/v0.56.0/hugo_0.56.0_macOS-64bit.tar.gz && tar -xzf hugo_0.56.0_macOS-64bit.tar.gz && mv ./hugo packages/cli/test/dev/fixtures/08-hugo/
|
||||||
- run: yarn install
|
- run: yarn install --network-timeout 1000000
|
||||||
- run: yarn run build
|
- run: yarn run build
|
||||||
- uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: ${{ matrix.node }}
|
|
||||||
- run: yarn test-integration-dev --clean false
|
- run: yarn test-integration-dev --clean false
|
||||||
env:
|
env:
|
||||||
VERCEL_TEAM_TOKEN: ${{ secrets.VERCEL_TEAM_TOKEN }}
|
VERCEL_TEAM_TOKEN: ${{ secrets.VERCEL_TEAM_TOKEN }}
|
||||||
|
|||||||
8
.github/workflows/test-integration-once.yml
vendored
8
.github/workflows/test-integration-once.yml
vendored
@@ -14,6 +14,12 @@ jobs:
|
|||||||
timeout-minutes: 120
|
timeout-minutes: 120
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
- uses: actions/setup-go@v2
|
||||||
|
with:
|
||||||
|
go-version: '1.13.15'
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: 12
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
fetch-depth: 100
|
fetch-depth: 100
|
||||||
@@ -21,7 +27,7 @@ jobs:
|
|||||||
- run: git fetch origin master --depth=100
|
- run: git fetch origin master --depth=100
|
||||||
- run: git fetch origin ${{ github.ref }} --depth=100
|
- run: git fetch origin ${{ github.ref }} --depth=100
|
||||||
- run: git diff origin/master...HEAD --name-only
|
- run: git diff origin/master...HEAD --name-only
|
||||||
- run: yarn install
|
- run: yarn install --network-timeout 1000000
|
||||||
- run: yarn run build
|
- run: yarn run build
|
||||||
- run: yarn test-integration-once --clean false
|
- run: yarn test-integration-once --clean false
|
||||||
env:
|
env:
|
||||||
|
|||||||
13
.github/workflows/test-unit.yml
vendored
13
.github/workflows/test-unit.yml
vendored
@@ -16,9 +16,15 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||||
node: [10, 12]
|
node: [12]
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
|
- uses: actions/setup-go@v2
|
||||||
|
with:
|
||||||
|
go-version: '1.13.15'
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node }}
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
fetch-depth: 100
|
fetch-depth: 100
|
||||||
@@ -26,10 +32,7 @@ jobs:
|
|||||||
- run: git fetch origin master --depth=100
|
- run: git fetch origin master --depth=100
|
||||||
- run: git fetch origin ${{ github.ref }} --depth=100
|
- run: git fetch origin ${{ github.ref }} --depth=100
|
||||||
- run: git diff origin/master...HEAD --name-only
|
- run: git diff origin/master...HEAD --name-only
|
||||||
- uses: actions/setup-node@v1
|
- run: yarn install --network-timeout 1000000
|
||||||
with:
|
|
||||||
node-version: ${{ matrix.node }}
|
|
||||||
- run: yarn install
|
|
||||||
- run: yarn run build
|
- run: yarn run build
|
||||||
- run: yarn run lint
|
- run: yarn run lint
|
||||||
if: matrix.os == 'ubuntu-latest' && matrix.node == 12 # only run lint once
|
if: matrix.os == 'ubuntu-latest' && matrix.node == 12 # only run lint once
|
||||||
|
|||||||
22
.gitignore
vendored
22
.gitignore
vendored
@@ -9,17 +9,17 @@ coverage.lcov
|
|||||||
*.swp
|
*.swp
|
||||||
*.bak
|
*.bak
|
||||||
*.tgz
|
*.tgz
|
||||||
packages/now-cli/src/util/dev/templates/*.ts
|
packages/cli/src/util/dev/templates/*.ts
|
||||||
packages/now-cli/src/util/constants.ts
|
packages/cli/src/util/constants.ts
|
||||||
packages/now-cli/test/**/yarn.lock
|
packages/cli/test/**/yarn.lock
|
||||||
!packages/now-cli/test/dev/**/yarn.lock
|
!packages/cli/test/dev/**/yarn.lock
|
||||||
packages/now-cli/test/**/node_modules
|
packages/cli/test/**/node_modules
|
||||||
packages/now-cli/test/dev/fixtures/08-hugo/hugo
|
packages/cli/test/dev/fixtures/08-hugo/hugo
|
||||||
packages/now-cli/test/dev/fixtures/**/dist
|
packages/cli/test/dev/fixtures/**/dist
|
||||||
packages/now-cli/test/dev/fixtures/**/public
|
packages/cli/test/dev/fixtures/**/public
|
||||||
packages/now-cli/test/dev/fixtures/**/.now
|
packages/cli/test/dev/fixtures/**/.now
|
||||||
packages/now-cli/test/dev/fixtures/**/.vercel
|
packages/cli/test/dev/fixtures/**/.vercel
|
||||||
packages/now-cli/test/fixtures/integration
|
packages/cli/test/fixtures/integration
|
||||||
test/lib/deployment/failed-page.txt
|
test/lib/deployment/failed-page.txt
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.next
|
.next
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ For details on how to use Vercel, check out our [documentation](https://vercel.c
|
|||||||
1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device
|
1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device
|
||||||
2. Install dependencies with `yarn install`
|
2. Install dependencies with `yarn install`
|
||||||
3. Compile the code: `yarn build`
|
3. Compile the code: `yarn build`
|
||||||
4. Link the package to the global module directory: `cd ./packages/now-cli && yarn link`
|
4. Link the package to the global module directory: `cd ./packages/cli && yarn link`
|
||||||
5. You can start using `vercel` anywhere inside the command line
|
5. You can start using `vercel` anywhere inside the command line
|
||||||
|
|
||||||
As always, you should use `yarn test-unit` to run the tests and see if your changes have broken anything.
|
As always, you should use `yarn test-unit` to run the tests and see if your changes have broken anything.
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { NowRequest, NowResponse } from '@vercel/node';
|
import { VercelRequest, VercelResponse } from '@vercel/node';
|
||||||
import { errorHandler } from './error-handler';
|
import { errorHandler } from './error-handler';
|
||||||
|
|
||||||
type Handler = (req: NowRequest, res: NowResponse) => Promise<any>;
|
type Handler = (req: VercelRequest, res: VercelResponse) => Promise<any>;
|
||||||
|
|
||||||
export function withApiHandler(handler: Handler): Handler {
|
export function withApiHandler(handler: Handler): Handler {
|
||||||
return async (req: NowRequest, res: NowResponse) => {
|
return async (req: VercelRequest, res: VercelResponse) => {
|
||||||
res.setHeader('Access-Control-Allow-Origin', '*');
|
res.setHeader('Access-Control-Allow-Origin', '*');
|
||||||
res.setHeader('Access-Control-Allow-Methods', 'GET');
|
res.setHeader('Access-Control-Allow-Methods', 'GET');
|
||||||
res.setHeader(
|
res.setHeader(
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import fs from 'fs';
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import tar from 'tar-fs';
|
import tar from 'tar-fs';
|
||||||
import { extract } from '../../_lib/examples/extract';
|
import { extract } from '../../_lib/examples/extract';
|
||||||
import { NowRequest, NowResponse } from '@vercel/node';
|
import { VercelRequest, VercelResponse } from '@vercel/node';
|
||||||
import { withApiHandler } from '../../_lib/util/with-api-handler';
|
import { withApiHandler } from '../../_lib/util/with-api-handler';
|
||||||
|
|
||||||
const TMP_DIR = '/tmp';
|
const TMP_DIR = '/tmp';
|
||||||
@@ -11,7 +11,7 @@ function isDirectory(path: string) {
|
|||||||
return fs.existsSync(path) && fs.lstatSync(path).isDirectory();
|
return fs.existsSync(path) && fs.lstatSync(path).isDirectory();
|
||||||
}
|
}
|
||||||
|
|
||||||
function notFound(res: NowResponse, message: string) {
|
function notFound(res: VercelResponse, message: string) {
|
||||||
return res.status(404).send({
|
return res.status(404).send({
|
||||||
error: {
|
error: {
|
||||||
code: 'not_found',
|
code: 'not_found',
|
||||||
@@ -36,8 +36,8 @@ function streamToBuffer(stream: any) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default withApiHandler(async function (
|
export default withApiHandler(async function (
|
||||||
req: NowRequest,
|
req: VercelRequest,
|
||||||
res: NowResponse
|
res: VercelResponse
|
||||||
) {
|
) {
|
||||||
const ext = '.tar.gz';
|
const ext = '.tar.gz';
|
||||||
const { segment = '' } = req.query;
|
const { segment = '' } = req.query;
|
||||||
|
|||||||
@@ -3,14 +3,14 @@
|
|||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import parseGitUrl from 'parse-github-url';
|
import parseGitUrl from 'parse-github-url';
|
||||||
import { NowRequest, NowResponse } from '@vercel/node';
|
import { VercelRequest, VercelResponse } from '@vercel/node';
|
||||||
import { withApiHandler } from '../_lib/util/with-api-handler';
|
import { withApiHandler } from '../_lib/util/with-api-handler';
|
||||||
import { getGitHubRepoInfo } from '../_lib/examples/github-repo-info';
|
import { getGitHubRepoInfo } from '../_lib/examples/github-repo-info';
|
||||||
import { getGitLabRepoInfo } from '../_lib/examples/gitlab-repo-info';
|
import { getGitLabRepoInfo } from '../_lib/examples/gitlab-repo-info';
|
||||||
|
|
||||||
export default withApiHandler(async function (
|
export default withApiHandler(async function (
|
||||||
req: NowRequest,
|
req: VercelRequest,
|
||||||
res: NowResponse
|
res: VercelResponse
|
||||||
) {
|
) {
|
||||||
const repoPath = decodeURIComponent((req.query.repo as string) || '');
|
const repoPath = decodeURIComponent((req.query.repo as string) || '');
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { NowRequest, NowResponse } from '@vercel/node';
|
import { VercelRequest, VercelResponse } from '@vercel/node';
|
||||||
import { getExampleList } from '../_lib/examples/example-list';
|
import { getExampleList } from '../_lib/examples/example-list';
|
||||||
import { withApiHandler } from '../_lib/util/with-api-handler';
|
import { withApiHandler } from '../_lib/util/with-api-handler';
|
||||||
|
|
||||||
export default withApiHandler(async function (
|
export default withApiHandler(async function (
|
||||||
req: NowRequest,
|
req: VercelRequest,
|
||||||
res: NowResponse
|
res: VercelResponse
|
||||||
) {
|
) {
|
||||||
res.status(200).json(await getExampleList());
|
res.status(200).json(await getExampleList());
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { extract } from '../_lib/examples/extract';
|
import { extract } from '../_lib/examples/extract';
|
||||||
import { summary } from '../_lib/examples/summary';
|
import { summary } from '../_lib/examples/summary';
|
||||||
import { NowRequest, NowResponse } from '@vercel/node';
|
import { VercelRequest, VercelResponse } from '@vercel/node';
|
||||||
import { mapOldToNew } from '../_lib/examples/map-old-to-new';
|
import { mapOldToNew } from '../_lib/examples/map-old-to-new';
|
||||||
import { withApiHandler } from '../_lib/util/with-api-handler';
|
import { withApiHandler } from '../_lib/util/with-api-handler';
|
||||||
|
|
||||||
export default withApiHandler(async function (
|
export default withApiHandler(async function (
|
||||||
req: NowRequest,
|
req: VercelRequest,
|
||||||
res: NowResponse
|
res: VercelResponse
|
||||||
) {
|
) {
|
||||||
await extract('https://github.com/vercel/vercel/archive/master.zip', '/tmp');
|
await extract('https://github.com/vercel/vercel/archive/master.zip', '/tmp');
|
||||||
const exampleList = summary('/tmp/vercel-master/examples');
|
const exampleList = summary('/tmp/vercel-master/examples');
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { NowRequest, NowResponse } from '@vercel/node';
|
import { VercelRequest, VercelResponse } from '@vercel/node';
|
||||||
import { withApiHandler } from './_lib/util/with-api-handler';
|
import { withApiHandler } from './_lib/util/with-api-handler';
|
||||||
import _frameworks, { Framework } from '../packages/frameworks';
|
import _frameworks, { Framework } from '../packages/frameworks';
|
||||||
|
|
||||||
@@ -12,6 +12,11 @@ const frameworks = (_frameworks as Framework[])
|
|||||||
...frameworkItem,
|
...frameworkItem,
|
||||||
detectors: undefined,
|
detectors: undefined,
|
||||||
sort: undefined,
|
sort: undefined,
|
||||||
|
dependency: undefined,
|
||||||
|
defaultRoutes: undefined,
|
||||||
|
cachePattern: undefined,
|
||||||
|
devCommand: undefined,
|
||||||
|
buildCommand: undefined,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (framework.logo) {
|
if (framework.logo) {
|
||||||
@@ -22,8 +27,8 @@ const frameworks = (_frameworks as Framework[])
|
|||||||
});
|
});
|
||||||
|
|
||||||
export default withApiHandler(async function (
|
export default withApiHandler(async function (
|
||||||
req: NowRequest,
|
req: VercelRequest,
|
||||||
res: NowResponse
|
res: VercelResponse
|
||||||
) {
|
) {
|
||||||
res.setHeader('Access-Control-Allow-Origin', '*');
|
res.setHeader('Access-Control-Allow-Origin', '*');
|
||||||
res.setHeader('Access-Control-Allow-Methods', 'GET');
|
res.setHeader('Access-Control-Allow-Methods', 'GET');
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
"description": "API for the vercel/vercel repo",
|
"description": "API for the vercel/vercel repo",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "yarn --cwd .. && node ../utils/run.js build all"
|
"vercel-build": "yarn --cwd .. && node ../utils/run.js build all"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/node": "5.11.1",
|
"@sentry/node": "5.11.1",
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "13.1.4",
|
"@types/node": "13.1.4",
|
||||||
"@types/node-fetch": "2.5.4",
|
"@types/node-fetch": "2.5.4",
|
||||||
"@vercel/node": "1.7.2",
|
"@vercel/node": "1.9.0",
|
||||||
"typescript": "3.9.6"
|
"typescript": "3.9.6"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
"strict": false,
|
"strict": false,
|
||||||
"forceConsistentCasingInFileNames": true,
|
"forceConsistentCasingInFileNames": true,
|
||||||
"noEmit": true,
|
"noEmit": true,
|
||||||
|
"noEmitOnError": true,
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"module": "commonjs",
|
"module": "commonjs",
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
|
|||||||
@@ -134,10 +134,10 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
"@vercel/node@1.7.2":
|
"@vercel/node@1.9.0":
|
||||||
version "1.7.2"
|
version "1.9.0"
|
||||||
resolved "https://registry.yarnpkg.com/@vercel/node/-/node-1.7.2.tgz#85cb8aac661c02dfef6fe752740f5b162e90767b"
|
resolved "https://registry.yarnpkg.com/@vercel/node/-/node-1.9.0.tgz#6b64f3b9a962ddb1089276fad00f441a1f4b9cf0"
|
||||||
integrity sha512-XV5lrLC+K/cxsaFj8H2OoGu1zliOqnxcrOnPInI8HmQjR/Tztt+0nzgpt+7sx8wXcrib0Nu7lK303jP7VjSETw==
|
integrity sha512-Vk/ZpuY4Cdc8oUwBi/kf8qETRaJb/KYdFddVkLuS10QwA0yJx+RQ11trhZ1KFUdc27aBr5S2k8/dDxK8sLr+IA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
ts-node "8.9.1"
|
ts-node "8.9.1"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { NowRequest, NowResponse } from '@vercel/node';
|
import { VercelRequest, VercelResponse } from '@vercel/node';
|
||||||
|
|
||||||
export default (_req: NowRequest, res: NowResponse) => {
|
export default (_req: VercelRequest, res: VercelResponse) => {
|
||||||
const date = new Date().toString();
|
const date = new Date().toString();
|
||||||
res.status(200).send(date);
|
res.status(200).send(date);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
"react-helmet": "^5.2.0"
|
"react-helmet": "^5.2.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vercel/node": "1.8.5"
|
"@vercel/node": "1.9.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "gatsby develop",
|
"dev": "gatsby develop",
|
||||||
|
|||||||
@@ -1400,10 +1400,10 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
wonka "^4.0.14"
|
wonka "^4.0.14"
|
||||||
|
|
||||||
"@vercel/node@1.8.5":
|
"@vercel/node@1.9.0":
|
||||||
version "1.8.5"
|
version "1.9.0"
|
||||||
resolved "https://registry.yarnpkg.com/@vercel/node/-/node-1.8.5.tgz#2c8b9532f1bb25734a9964c52973386ed78022d4"
|
resolved "https://registry.yarnpkg.com/@vercel/node/-/node-1.9.0.tgz#6b64f3b9a962ddb1089276fad00f441a1f4b9cf0"
|
||||||
integrity sha512-1iw7FSR8Oau6vZB1MWfBnA5q2a/IqRHiSZSbt8lz0dyTF599q8pc5GcSv/TvmrYaEGzh3+N0S4cbmuMCqVlwJg==
|
integrity sha512-Vk/ZpuY4Cdc8oUwBi/kf8qETRaJb/KYdFddVkLuS10QwA0yJx+RQ11trhZ1KFUdc27aBr5S2k8/dDxK8sLr+IA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
ts-node "8.9.1"
|
ts-node "8.9.1"
|
||||||
|
|||||||
@@ -8,6 +8,6 @@
|
|||||||
"explore": "gridsome explore"
|
"explore": "gridsome explore"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"gridsome": "^0.6.0"
|
"gridsome": "0.7.23"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,18 +3,18 @@
|
|||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"hexo": {
|
"hexo": {
|
||||||
"version": "3.9.0"
|
"version": "5.3.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"hexo": "^3.9.0",
|
"hexo": "^5.3.0",
|
||||||
"hexo-generator-archive": "^0.1.5",
|
"hexo-generator-archive": "^1.0.0",
|
||||||
"hexo-generator-category": "^0.1.3",
|
"hexo-generator-category": "^1.0.0",
|
||||||
"hexo-generator-index": "^0.2.1",
|
"hexo-generator-index": "^2.0.0",
|
||||||
"hexo-generator-tag": "^0.2.0",
|
"hexo-generator-tag": "^1.0.0",
|
||||||
"hexo-renderer-ejs": "^0.3.1",
|
"hexo-renderer-ejs": "^1.0.0",
|
||||||
"hexo-renderer-stylus": "^0.3.3",
|
"hexo-renderer-marked": "^3.3.0",
|
||||||
"hexo-renderer-marked": "^1.0.1",
|
"hexo-renderer-stylus": "^2.0.1",
|
||||||
"hexo-server": "^0.3.3"
|
"hexo-server": "^2.0.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "hexo server -p $PORT",
|
"dev": "hexo server -p $PORT",
|
||||||
|
|||||||
5
examples/jekyll/.gitignore
vendored
5
examples/jekyll/.gitignore
vendored
@@ -1,6 +1,9 @@
|
|||||||
_site
|
_site
|
||||||
public
|
|
||||||
.sass-cache
|
.sass-cache
|
||||||
|
.jekyll-cache
|
||||||
.jekyll-metadata
|
.jekyll-metadata
|
||||||
|
vendor
|
||||||
|
public
|
||||||
.env
|
.env
|
||||||
.env.build
|
.env.build
|
||||||
|
.vercel
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
---
|
---
|
||||||
|
permalink: /404.html
|
||||||
layout: default
|
layout: default
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
# Hello! This is where you manage which Jekyll version is used to run.
|
# Hello! This is where you manage which Jekyll version is used to run.
|
||||||
# When you want to use a different version, change it below, save the
|
# When you want to use a different version, change it below, save the
|
||||||
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
|
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
|
||||||
@@ -8,27 +7,23 @@ source "https://rubygems.org"
|
|||||||
#
|
#
|
||||||
# This will help ensure the proper Jekyll version is running.
|
# This will help ensure the proper Jekyll version is running.
|
||||||
# Happy Jekylling!
|
# Happy Jekylling!
|
||||||
gem "jekyll", "~> 3.8.6"
|
gem "jekyll", "~> 4.2.0"
|
||||||
|
|
||||||
# This is the default theme for new Jekyll sites. You may change this to anything you like.
|
# This is the default theme for new Jekyll sites. You may change this to anything you like.
|
||||||
gem "minima", "~> 2.0"
|
gem "minima", "~> 2.5"
|
||||||
|
|
||||||
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
|
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
|
||||||
# uncomment the line below. To upgrade, run `bundle update github-pages`.
|
# uncomment the line below. To upgrade, run `bundle update github-pages`.
|
||||||
# gem "github-pages", group: :jekyll_plugins
|
# gem "github-pages", group: :jekyll_plugins
|
||||||
|
|
||||||
# If you have any plugins, put them here!
|
# If you have any plugins, put them here!
|
||||||
group :jekyll_plugins do
|
group :jekyll_plugins do
|
||||||
gem "jekyll-feed", "~> 0.6"
|
gem "jekyll-feed", "~> 0.12"
|
||||||
end
|
end
|
||||||
|
|
||||||
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
|
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||||
# and associated library.
|
# and associated library.
|
||||||
install_if -> { RUBY_PLATFORM =~ %r!mingw|mswin|java! } do
|
platforms :mingw, :x64_mingw, :mswin, :jruby do
|
||||||
gem "tzinfo", "~> 1.2"
|
gem "tzinfo", "~> 1.2"
|
||||||
gem "tzinfo-data"
|
gem "tzinfo-data"
|
||||||
end
|
end
|
||||||
|
|
||||||
# Performance-booster for watching directories on Windows
|
# Performance-booster for watching directories on Windows
|
||||||
gem "wdm", "~> 0.1.0", :install_if => Gem.win_platform?
|
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
|
||||||
|
|
||||||
|
|||||||
@@ -1,82 +1,80 @@
|
|||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
addressable (2.6.0)
|
addressable (2.7.0)
|
||||||
public_suffix (>= 2.0.2, < 4.0)
|
public_suffix (>= 2.0.2, < 5.0)
|
||||||
colorator (1.1.0)
|
colorator (1.1.0)
|
||||||
concurrent-ruby (1.1.5)
|
concurrent-ruby (1.1.8)
|
||||||
em-websocket (0.5.1)
|
em-websocket (0.5.2)
|
||||||
eventmachine (>= 0.12.9)
|
eventmachine (>= 0.12.9)
|
||||||
http_parser.rb (~> 0.6.0)
|
http_parser.rb (~> 0.6.0)
|
||||||
eventmachine (1.2.7)
|
eventmachine (1.2.7)
|
||||||
ffi (1.11.1)
|
ffi (1.14.2)
|
||||||
forwardable-extended (2.6.0)
|
forwardable-extended (2.6.0)
|
||||||
http_parser.rb (0.6.0)
|
http_parser.rb (0.6.0)
|
||||||
i18n (0.9.5)
|
i18n (1.8.9)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
jekyll (3.8.6)
|
jekyll (4.2.0)
|
||||||
addressable (~> 2.4)
|
addressable (~> 2.4)
|
||||||
colorator (~> 1.0)
|
colorator (~> 1.0)
|
||||||
em-websocket (~> 0.5)
|
em-websocket (~> 0.5)
|
||||||
i18n (~> 0.7)
|
i18n (~> 1.0)
|
||||||
jekyll-sass-converter (~> 1.0)
|
jekyll-sass-converter (~> 2.0)
|
||||||
jekyll-watch (~> 2.0)
|
jekyll-watch (~> 2.0)
|
||||||
kramdown (~> 1.14)
|
kramdown (~> 2.3)
|
||||||
|
kramdown-parser-gfm (~> 1.0)
|
||||||
liquid (~> 4.0)
|
liquid (~> 4.0)
|
||||||
mercenary (~> 0.3.3)
|
mercenary (~> 0.4.0)
|
||||||
pathutil (~> 0.9)
|
pathutil (~> 0.9)
|
||||||
rouge (>= 1.7, < 4)
|
rouge (~> 3.0)
|
||||||
safe_yaml (~> 1.0)
|
safe_yaml (~> 1.0)
|
||||||
jekyll-feed (0.12.1)
|
terminal-table (~> 2.0)
|
||||||
|
jekyll-feed (0.15.1)
|
||||||
jekyll (>= 3.7, < 5.0)
|
jekyll (>= 3.7, < 5.0)
|
||||||
jekyll-sass-converter (1.5.2)
|
jekyll-sass-converter (2.1.0)
|
||||||
sass (~> 3.4)
|
sassc (> 2.0.1, < 3.0)
|
||||||
jekyll-seo-tag (2.6.1)
|
jekyll-seo-tag (2.7.1)
|
||||||
jekyll (>= 3.3, < 5.0)
|
jekyll (>= 3.8, < 5.0)
|
||||||
jekyll-watch (2.2.1)
|
jekyll-watch (2.2.1)
|
||||||
listen (~> 3.0)
|
listen (~> 3.0)
|
||||||
kramdown (1.17.0)
|
kramdown (2.3.0)
|
||||||
|
rexml
|
||||||
|
kramdown-parser-gfm (1.1.0)
|
||||||
|
kramdown (~> 2.0)
|
||||||
liquid (4.0.3)
|
liquid (4.0.3)
|
||||||
listen (3.1.5)
|
listen (3.4.1)
|
||||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||||
rb-inotify (~> 0.9, >= 0.9.7)
|
rb-inotify (~> 0.9, >= 0.9.10)
|
||||||
ruby_dep (~> 1.2)
|
mercenary (0.4.0)
|
||||||
mercenary (0.3.6)
|
minima (2.5.1)
|
||||||
minima (2.5.0)
|
jekyll (>= 3.5, < 5.0)
|
||||||
jekyll (~> 3.5)
|
|
||||||
jekyll-feed (~> 0.9)
|
jekyll-feed (~> 0.9)
|
||||||
jekyll-seo-tag (~> 2.1)
|
jekyll-seo-tag (~> 2.1)
|
||||||
pathutil (0.16.2)
|
pathutil (0.16.2)
|
||||||
forwardable-extended (~> 2.6)
|
forwardable-extended (~> 2.6)
|
||||||
public_suffix (3.1.1)
|
public_suffix (4.0.6)
|
||||||
rb-fsevent (0.10.3)
|
rb-fsevent (0.10.4)
|
||||||
rb-inotify (0.10.0)
|
rb-inotify (0.10.1)
|
||||||
ffi (~> 1.0)
|
ffi (~> 1.0)
|
||||||
rouge (3.6.0)
|
rexml (3.2.4)
|
||||||
ruby_dep (1.5.0)
|
rouge (3.26.0)
|
||||||
safe_yaml (1.0.5)
|
safe_yaml (1.0.5)
|
||||||
sass (3.7.4)
|
sassc (2.4.0)
|
||||||
sass-listen (~> 4.0.0)
|
ffi (~> 1.9)
|
||||||
sass-listen (4.0.0)
|
terminal-table (2.0.0)
|
||||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||||
rb-inotify (~> 0.9, >= 0.9.7)
|
unicode-display_width (1.7.0)
|
||||||
thread_safe (0.3.6)
|
|
||||||
tzinfo (1.2.5)
|
|
||||||
thread_safe (~> 0.1)
|
|
||||||
tzinfo-data (1.2019.2)
|
|
||||||
tzinfo (>= 1.0.0)
|
|
||||||
wdm (0.1.1)
|
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
ruby
|
x86_64-linux
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
jekyll (~> 3.8.6)
|
jekyll (~> 4.2.0)
|
||||||
jekyll-feed (~> 0.6)
|
jekyll-feed (~> 0.12)
|
||||||
minima (~> 2.0)
|
minima (~> 2.5)
|
||||||
tzinfo (~> 1.2)
|
tzinfo (~> 1.2)
|
||||||
tzinfo-data
|
tzinfo-data
|
||||||
wdm (~> 0.1.0)
|
wdm (~> 0.1.1)
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
2.1.4
|
2.2.4
|
||||||
|
|||||||
@@ -7,12 +7,17 @@
|
|||||||
#
|
#
|
||||||
# For technical reasons, this file is *NOT* reloaded automatically when you use
|
# For technical reasons, this file is *NOT* reloaded automatically when you use
|
||||||
# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
|
# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
|
||||||
|
#
|
||||||
|
# If you need help with YAML syntax, here are some quick references for you:
|
||||||
|
# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
|
||||||
|
# https://learnxinyminutes.com/docs/yaml/
|
||||||
|
#
|
||||||
# Site settings
|
# Site settings
|
||||||
# These are used to personalize your new site. If you look in the HTML files,
|
# These are used to personalize your new site. If you look in the HTML files,
|
||||||
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
|
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
|
||||||
# You can create any custom variable you would like, and they will be accessible
|
# You can create any custom variable you would like, and they will be accessible
|
||||||
# in the templates via {{ site.myvariable }}.
|
# in the templates via {{ site.myvariable }}.
|
||||||
|
|
||||||
title: Your awesome title
|
title: Your awesome title
|
||||||
email: your-email@example.com
|
email: your-email@example.com
|
||||||
description: >- # this means to ignore newlines until "baseurl:"
|
description: >- # this means to ignore newlines until "baseurl:"
|
||||||
@@ -23,21 +28,27 @@ baseurl: "" # the subpath of your site, e.g. /blog
|
|||||||
url: "" # the base hostname & protocol for your site, e.g. http://example.com
|
url: "" # the base hostname & protocol for your site, e.g. http://example.com
|
||||||
twitter_username: jekyllrb
|
twitter_username: jekyllrb
|
||||||
github_username: jekyll
|
github_username: jekyll
|
||||||
permalink: pretty
|
|
||||||
|
|
||||||
# Build settings
|
# Build settings
|
||||||
markdown: kramdown
|
|
||||||
theme: minima
|
theme: minima
|
||||||
plugins:
|
plugins:
|
||||||
- jekyll-feed
|
- jekyll-feed
|
||||||
|
|
||||||
# Exclude from processing.
|
# Exclude from processing.
|
||||||
# The following items will not be processed, by default. Create a custom list
|
# The following items will not be processed, by default.
|
||||||
# to override the default setting.
|
# Any item listed under the `exclude:` key here will be automatically added to
|
||||||
|
# the internal "default list".
|
||||||
|
#
|
||||||
|
# Excluded items can be processed by explicitly listing the directories or
|
||||||
|
# their entries' file path in the `include:` list.
|
||||||
|
#
|
||||||
# exclude:
|
# exclude:
|
||||||
|
# - .sass-cache/
|
||||||
|
# - .jekyll-cache/
|
||||||
|
# - gemfiles/
|
||||||
# - Gemfile
|
# - Gemfile
|
||||||
# - Gemfile.lock
|
# - Gemfile.lock
|
||||||
# - node_modules
|
# - node_modules/
|
||||||
# - vendor/bundle/
|
# - vendor/bundle/
|
||||||
# - vendor/cache/
|
# - vendor/cache/
|
||||||
# - vendor/gems/
|
# - vendor/gems/
|
||||||
|
|||||||
@@ -1,18 +1,23 @@
|
|||||||
---
|
---
|
||||||
layout: post
|
layout: post
|
||||||
title: "Welcome to Jekyll!"
|
title: 'Welcome to Jekyll!'
|
||||||
date: 2019-07-18 00:15:52 +0100
|
date: 2021-02-19 23:17:16 +0000
|
||||||
categories: jekyll update
|
categories: jekyll update
|
||||||
---
|
---
|
||||||
|
|
||||||
You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
|
You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
|
||||||
|
|
||||||
To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.
|
Jekyll requires blog post files to be named according to the following format:
|
||||||
|
|
||||||
|
`YEAR-MONTH-DAY-title.MARKUP`
|
||||||
|
|
||||||
|
Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.
|
||||||
|
|
||||||
Jekyll also offers powerful support for code snippets:
|
Jekyll also offers powerful support for code snippets:
|
||||||
|
|
||||||
{% highlight ruby %}
|
{% highlight ruby %}
|
||||||
def print_hi(name)
|
def print_hi(name)
|
||||||
puts "Hi, #{name}"
|
puts "Hi, #{name}"
|
||||||
end
|
end
|
||||||
print_hi('Tom')
|
print_hi('Tom')
|
||||||
#=> prints 'Hi, Tom' to STDOUT.
|
#=> prints 'Hi, Tom' to STDOUT.
|
||||||
@@ -21,5 +26,5 @@ print_hi('Tom')
|
|||||||
Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
|
Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
|
||||||
|
|
||||||
[jekyll-docs]: https://jekyllrb.com/docs/home
|
[jekyll-docs]: https://jekyllrb.com/docs/home
|
||||||
[jekyll-gh]: https://github.com/jekyll/jekyll
|
[jekyll-gh]: https://github.com/jekyll/jekyll
|
||||||
[jekyll-talk]: https://talk.jekyllrb.com/
|
[jekyll-talk]: https://talk.jekyllrb.com/
|
||||||
1
examples/middleman/.gitignore
vendored
1
examples/middleman/.gitignore
vendored
@@ -3,3 +3,4 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
.sass-cache
|
.sass-cache
|
||||||
build/
|
build/
|
||||||
|
.vercel
|
||||||
|
|||||||
@@ -1,29 +1,29 @@
|
|||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
activesupport (5.0.7.2)
|
activesupport (5.2.4.5)
|
||||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||||
i18n (>= 0.7, < 2)
|
i18n (>= 0.7, < 2)
|
||||||
minitest (~> 5.1)
|
minitest (~> 5.1)
|
||||||
tzinfo (~> 1.1)
|
tzinfo (~> 1.1)
|
||||||
addressable (2.7.0)
|
addressable (2.7.0)
|
||||||
public_suffix (>= 2.0.2, < 5.0)
|
public_suffix (>= 2.0.2, < 5.0)
|
||||||
autoprefixer-rails (9.6.1.1)
|
autoprefixer-rails (9.8.6.5)
|
||||||
execjs
|
execjs
|
||||||
backports (3.15.0)
|
backports (3.20.2)
|
||||||
coffee-script (2.4.1)
|
coffee-script (2.4.1)
|
||||||
coffee-script-source
|
coffee-script-source
|
||||||
execjs
|
execjs
|
||||||
coffee-script-source (1.12.2)
|
coffee-script-source (1.12.2)
|
||||||
concurrent-ruby (1.1.5)
|
concurrent-ruby (1.1.8)
|
||||||
contracts (0.13.0)
|
contracts (0.13.0)
|
||||||
dotenv (2.7.5)
|
dotenv (2.7.6)
|
||||||
erubis (2.7.0)
|
erubis (2.7.0)
|
||||||
execjs (2.7.0)
|
execjs (2.7.0)
|
||||||
fast_blank (1.0.0)
|
fast_blank (1.0.0)
|
||||||
fastimage (2.1.7)
|
fastimage (2.2.2)
|
||||||
ffi (1.11.1)
|
ffi (1.14.2)
|
||||||
haml (5.1.2)
|
haml (5.2.1)
|
||||||
temple (>= 0.8.0)
|
temple (>= 0.8.0)
|
||||||
tilt
|
tilt
|
||||||
hamster (3.0.0)
|
hamster (3.0.0)
|
||||||
@@ -31,24 +31,25 @@ GEM
|
|||||||
hashie (3.6.0)
|
hashie (3.6.0)
|
||||||
i18n (0.9.5)
|
i18n (0.9.5)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
kramdown (1.17.0)
|
kramdown (2.3.0)
|
||||||
|
rexml
|
||||||
listen (3.0.8)
|
listen (3.0.8)
|
||||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||||
rb-inotify (~> 0.9, >= 0.9.7)
|
rb-inotify (~> 0.9, >= 0.9.7)
|
||||||
memoist (0.16.0)
|
memoist (0.16.2)
|
||||||
middleman (4.3.5)
|
middleman (4.3.11)
|
||||||
coffee-script (~> 2.2)
|
coffee-script (~> 2.2)
|
||||||
haml (>= 4.0.5)
|
haml (>= 4.0.5)
|
||||||
kramdown (~> 1.2)
|
kramdown (>= 2.3.0)
|
||||||
middleman-cli (= 4.3.5)
|
middleman-cli (= 4.3.11)
|
||||||
middleman-core (= 4.3.5)
|
middleman-core (= 4.3.11)
|
||||||
middleman-autoprefixer (2.10.1)
|
middleman-autoprefixer (2.10.1)
|
||||||
autoprefixer-rails (~> 9.1)
|
autoprefixer-rails (~> 9.1)
|
||||||
middleman-core (>= 3.3.3)
|
middleman-core (>= 3.3.3)
|
||||||
middleman-cli (4.3.5)
|
middleman-cli (4.3.11)
|
||||||
thor (>= 0.17.0, < 2.0)
|
thor (>= 0.17.0, < 2.0)
|
||||||
middleman-core (4.3.5)
|
middleman-core (4.3.11)
|
||||||
activesupport (>= 4.2, < 5.1)
|
activesupport (>= 4.2, < 6.0)
|
||||||
addressable (~> 2.3)
|
addressable (~> 2.3)
|
||||||
backports (~> 3.6)
|
backports (~> 3.6)
|
||||||
bundler
|
bundler
|
||||||
@@ -70,33 +71,34 @@ GEM
|
|||||||
servolux
|
servolux
|
||||||
tilt (~> 2.0.9)
|
tilt (~> 2.0.9)
|
||||||
uglifier (~> 3.0)
|
uglifier (~> 3.0)
|
||||||
minitest (5.12.2)
|
minitest (5.14.3)
|
||||||
padrino-helpers (0.13.3.4)
|
padrino-helpers (0.13.3.4)
|
||||||
i18n (~> 0.6, >= 0.6.7)
|
i18n (~> 0.6, >= 0.6.7)
|
||||||
padrino-support (= 0.13.3.4)
|
padrino-support (= 0.13.3.4)
|
||||||
tilt (>= 1.4.1, < 3)
|
tilt (>= 1.4.1, < 3)
|
||||||
padrino-support (0.13.3.4)
|
padrino-support (0.13.3.4)
|
||||||
activesupport (>= 3.1)
|
activesupport (>= 3.1)
|
||||||
parallel (1.17.0)
|
parallel (1.20.1)
|
||||||
public_suffix (4.0.1)
|
public_suffix (4.0.6)
|
||||||
rack (2.0.7)
|
rack (2.2.3)
|
||||||
rb-fsevent (0.10.3)
|
rb-fsevent (0.10.4)
|
||||||
rb-inotify (0.10.0)
|
rb-inotify (0.10.1)
|
||||||
ffi (~> 1.0)
|
ffi (~> 1.0)
|
||||||
sassc (2.2.1)
|
rexml (3.2.4)
|
||||||
|
sassc (2.4.0)
|
||||||
ffi (~> 1.9)
|
ffi (~> 1.9)
|
||||||
servolux (0.13.0)
|
servolux (0.13.0)
|
||||||
temple (0.8.2)
|
temple (0.8.2)
|
||||||
thor (0.20.3)
|
thor (1.1.0)
|
||||||
thread_safe (0.3.6)
|
thread_safe (0.3.6)
|
||||||
tilt (2.0.10)
|
tilt (2.0.10)
|
||||||
tzinfo (1.2.5)
|
tzinfo (1.2.9)
|
||||||
thread_safe (~> 0.1)
|
thread_safe (~> 0.1)
|
||||||
uglifier (3.2.0)
|
uglifier (3.2.0)
|
||||||
execjs (>= 0.3.0, < 3)
|
execjs (>= 0.3.0, < 3)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
ruby
|
x86_64-linux
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
middleman (~> 4.2)
|
middleman (~> 4.2)
|
||||||
@@ -105,4 +107,4 @@ DEPENDENCIES
|
|||||||
wdm (~> 0.1)
|
wdm (~> 0.1)
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
2.1.4
|
2.2.4
|
||||||
|
|||||||
@@ -13,6 +13,6 @@
|
|||||||
"nuxt": "^2.0.0"
|
"nuxt": "^2.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"nodemon": "^1.18.9"
|
"nodemon": "^2.0.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
8116
examples/nuxtjs/yarn.lock
Normal file
8116
examples/nuxtjs/yarn.lock
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,10 +0,0 @@
|
|||||||
# editorconfig.org
|
|
||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
charset = utf-8
|
|
||||||
end_of_line = lf
|
|
||||||
indent_size = 2
|
|
||||||
indent_style = space
|
|
||||||
insert_final_newline = true
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
@@ -3,5 +3,11 @@
|
|||||||
# system. Any custom values should go in .env and .env should *not* be checked
|
# system. Any custom values should go in .env and .env should *not* be checked
|
||||||
# into version control.
|
# into version control.
|
||||||
|
|
||||||
|
# schema.prisma defaults
|
||||||
DATABASE_URL=file:./dev.db
|
DATABASE_URL=file:./dev.db
|
||||||
BINARY_TARGET=native
|
|
||||||
|
# location of the test database for api service scenarios (defaults to ./.redwood/test.db if not set)
|
||||||
|
# TEST_DATABASE_URL=file:./.redwood/test.db
|
||||||
|
|
||||||
|
# disables Prisma CLI update notifier
|
||||||
|
PRISMA_HIDE_UPDATE_MESSAGE=true
|
||||||
|
|||||||
3
examples/redwoodjs/.gitignore
vendored
3
examples/redwoodjs/.gitignore
vendored
@@ -1,10 +1,13 @@
|
|||||||
|
.idea
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.env
|
.env
|
||||||
.netlify
|
.netlify
|
||||||
|
.redwood
|
||||||
dev.db
|
dev.db
|
||||||
dist
|
dist
|
||||||
dist-babel
|
dist-babel
|
||||||
node_modules
|
node_modules
|
||||||
yarn-error.log
|
yarn-error.log
|
||||||
|
web/public/mockServiceWorker.js
|
||||||
|
|
||||||
.vercel
|
.vercel
|
||||||
@@ -1 +0,0 @@
|
|||||||
lts/*
|
|
||||||
@@ -5,11 +5,11 @@ datasource DS {
|
|||||||
|
|
||||||
generator client {
|
generator client {
|
||||||
provider = "prisma-client-js"
|
provider = "prisma-client-js"
|
||||||
binaryTargets = env("BINARY_TARGET")
|
binaryTargets = "native"
|
||||||
}
|
}
|
||||||
|
|
||||||
// Define your own datamodels here and run `yarn redwood db save` to create
|
// Define your own datamodels here and run `yarn redwood prisma migrate dev`
|
||||||
// migrations for them.
|
// to create migrations for them and apply to your dev DB.
|
||||||
// TODO: Please remove the following example:
|
// TODO: Please remove the following example:
|
||||||
model UserExample {
|
model UserExample {
|
||||||
id Int @id @default(autoincrement())
|
id Int @id @default(autoincrement())
|
||||||
@@ -6,6 +6,8 @@ dotenv.config()
|
|||||||
const db = new PrismaClient()
|
const db = new PrismaClient()
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
|
// https://www.prisma.io/docs/guides/prisma-guides/seed-database
|
||||||
|
//
|
||||||
// Seed data is database data that needs to exist for your app to run.
|
// Seed data is database data that needs to exist for your app to run.
|
||||||
// Ideally this file should be idempotent: running it multiple times
|
// Ideally this file should be idempotent: running it multiple times
|
||||||
// will result in the same database state (usually by checking for the
|
// will result in the same database state (usually by checking for the
|
||||||
@@ -16,11 +18,11 @@ async function main() {
|
|||||||
// await db.user.create({ data: { name: 'Admin', email: 'admin@email.com' }})
|
// await db.user.create({ data: { name: 'Admin', email: 'admin@email.com' }})
|
||||||
// }
|
// }
|
||||||
|
|
||||||
console.info('No data to seed. See api/prisma/seeds.js for info.')
|
console.info('No data to seed. See api/db/seed.js for info.')
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
.catch((e) => console.error(e))
|
.catch((e) => console.error(e))
|
||||||
.finally(async () => {
|
.finally(async () => {
|
||||||
await db.disconnect()
|
await db.$disconnect()
|
||||||
})
|
})
|
||||||
6
examples/redwoodjs/api/jest.config.js
Normal file
6
examples/redwoodjs/api/jest.config.js
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
const { getConfig } = require('@redwoodjs/core')
|
||||||
|
|
||||||
|
const config = getConfig({ type: 'jest', target: 'node' })
|
||||||
|
config.displayName.name = 'api'
|
||||||
|
|
||||||
|
module.exports = config
|
||||||
@@ -5,5 +5,5 @@
|
|||||||
"src/*": ["./src/*"]
|
"src/*": ["./src/*"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"include": ["src/**/*"]
|
"include": ["src/**/*", "../.redwood/index.d.ts"]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@redwoodjs/api": "0.15.0"
|
"@redwoodjs/api": "^0.25.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,17 +3,18 @@ import {
|
|||||||
makeMergedSchema,
|
makeMergedSchema,
|
||||||
makeServices,
|
makeServices,
|
||||||
} from '@redwoodjs/api'
|
} from '@redwoodjs/api'
|
||||||
import importAll from '@redwoodjs/api/importAll.macro'
|
|
||||||
|
|
||||||
|
import schemas from 'src/graphql/**/*.{js,ts}'
|
||||||
import { db } from 'src/lib/db'
|
import { db } from 'src/lib/db'
|
||||||
|
import services from 'src/services/**/*.{js,ts}'
|
||||||
const schemas = importAll('api', 'graphql')
|
|
||||||
const services = importAll('api', 'services')
|
|
||||||
|
|
||||||
export const handler = createGraphQLHandler({
|
export const handler = createGraphQLHandler({
|
||||||
schema: makeMergedSchema({
|
schema: makeMergedSchema({
|
||||||
schemas,
|
schemas,
|
||||||
services: makeServices({ services }),
|
services: makeServices({ services }),
|
||||||
}),
|
}),
|
||||||
db,
|
onException: () => {
|
||||||
|
// Disconnect from your database with an unhandled exception.
|
||||||
|
db.$disconnect()
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// See https://github.com/prisma/prisma2/blob/master/docs/prisma-client-js/api.md#constructor
|
// See https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/constructor
|
||||||
// for options.
|
// for options.
|
||||||
|
|
||||||
import { PrismaClient } from '@prisma/client'
|
import { PrismaClient } from '@prisma/client'
|
||||||
|
|||||||
7
examples/redwoodjs/graphql.config.js
Normal file
7
examples/redwoodjs/graphql.config.js
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
const { getConfig } = require('@redwoodjs/internal')
|
||||||
|
|
||||||
|
const config = getConfig()
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
schema: `http://${config.api.host}:${config.api.port}/graphql`,
|
||||||
|
}
|
||||||
@@ -3,11 +3,12 @@
|
|||||||
"workspaces": {
|
"workspaces": {
|
||||||
"packages": [
|
"packages": [
|
||||||
"api",
|
"api",
|
||||||
"web"
|
"web",
|
||||||
|
"packages/*"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@redwoodjs/core": "0.15.0"
|
"@redwoodjs/core": "^0.25.0"
|
||||||
},
|
},
|
||||||
"eslintConfig": {
|
"eslintConfig": {
|
||||||
"extends": "@redwoodjs/eslint-config"
|
"extends": "@redwoodjs/eslint-config"
|
||||||
|
|||||||
@@ -6,4 +6,12 @@ module.exports = {
|
|||||||
semi: false,
|
semi: false,
|
||||||
singleQuote: true,
|
singleQuote: true,
|
||||||
arrowParens: 'always',
|
arrowParens: 'always',
|
||||||
|
overrides: [
|
||||||
|
{
|
||||||
|
files: 'Routes.js',
|
||||||
|
options: {
|
||||||
|
printWidth: 200,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,15 @@
|
|||||||
|
# This file contains the configuration settings for your Redwood app.
|
||||||
|
# This file is also what makes your Redwood app a Redwood app.
|
||||||
|
# If you remove it and try to run `yarn rw dev`, you'll get an error.
|
||||||
|
#
|
||||||
|
# For the full list of options, see the "App Configuration: redwood.toml" doc:
|
||||||
|
# https://redwoodjs.com/docs/app-configuration-redwood-toml
|
||||||
|
|
||||||
[web]
|
[web]
|
||||||
port = 8910
|
port = 8910
|
||||||
apiProxyPath = "/api"
|
apiProxyPath = "/api"
|
||||||
[api]
|
[api]
|
||||||
port = 8911
|
port = 8911
|
||||||
|
schemaPath = "./api/db/schema.prisma"
|
||||||
[browser]
|
[browser]
|
||||||
open = false
|
open = false
|
||||||
|
|||||||
6
examples/redwoodjs/web/jest.config.js
Normal file
6
examples/redwoodjs/web/jest.config.js
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
const { getConfig } = require('@redwoodjs/core')
|
||||||
|
|
||||||
|
const config = getConfig({ type: 'jest', target: 'browser' })
|
||||||
|
config.displayName.name = 'web'
|
||||||
|
|
||||||
|
module.exports = config
|
||||||
@@ -6,5 +6,5 @@
|
|||||||
},
|
},
|
||||||
"jsx": "preserve"
|
"jsx": "preserve"
|
||||||
},
|
},
|
||||||
"include": ["src/**/*"]
|
"include": ["src/**/*", "../.redwood/index.d.ts"]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,12 +2,20 @@
|
|||||||
"name": "web",
|
"name": "web",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"browserslist": [
|
"browserslist": {
|
||||||
"defaults"
|
"development": [
|
||||||
],
|
"last 1 version"
|
||||||
|
],
|
||||||
|
"production": [
|
||||||
|
"defaults",
|
||||||
|
"not IE 11",
|
||||||
|
"not IE_Mob 11"
|
||||||
|
]
|
||||||
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@redwoodjs/router": "0.15.0",
|
"@redwoodjs/forms": "^0.25.0",
|
||||||
"@redwoodjs/web": "0.15.0",
|
"@redwoodjs/router": "^0.25.0",
|
||||||
|
"@redwoodjs/web": "^0.25.0",
|
||||||
"prop-types": "^15.7.2",
|
"prop-types": "^15.7.2",
|
||||||
"react": "^16.13.1",
|
"react": "^16.13.1",
|
||||||
"react-dom": "^16.13.1"
|
"react-dom": "^16.13.1"
|
||||||
|
|||||||
@@ -1,13 +1,19 @@
|
|||||||
# Static Assets
|
# Static Assets
|
||||||
|
|
||||||
Use this folder to add static files directly to your app. All included files and folders will be copied directly into the `/dist` folder (created when Webpack builds for production). They will also be available during development when you run `yarn rw dev`.
|
Use this folder to add static files directly to your app. All included files and folders will be copied directly into the `/dist` folder (created when Webpack builds for production). They will also be available during development when you run `yarn rw dev`.
|
||||||
>Note: files will *not* hot reload while the development server is running. You'll need to manually stop/start to access file changes.
|
|
||||||
|
> Note: files will _not_ hot reload while the development server is running. You'll need to manually stop/start to access file changes.
|
||||||
|
|
||||||
### Example Use
|
### Example Use
|
||||||
|
|
||||||
A file like `favicon.png` will be copied to `/dist/favicon.png`. A folder containing a file such as `static-files/my-logo.jpg` will be copied to `/dist/static-files/my-logo.jpg`. These can be referenced in your code directly without any special handling, e.g.
|
A file like `favicon.png` will be copied to `/dist/favicon.png`. A folder containing a file such as `static-files/my-logo.jpg` will be copied to `/dist/static-files/my-logo.jpg`. These can be referenced in your code directly without any special handling, e.g.
|
||||||
|
|
||||||
```
|
```
|
||||||
<link rel="icon" type="image/png" href="/favicon.png" />
|
<link rel="icon" type="image/png" href="/favicon.png" />
|
||||||
```
|
```
|
||||||
|
|
||||||
and
|
and
|
||||||
|
|
||||||
```
|
```
|
||||||
<img src="/static-files/my-logo.jpg"> alt="Logo" />
|
<img src="/static-files/my-logo.jpg"> alt="Logo" />
|
||||||
```
|
```
|
||||||
@@ -15,12 +21,15 @@ and
|
|||||||
Behind the scenes, we are using Webpack's ["copy-webpack-plugin"](https://github.com/webpack-contrib/copy-webpack-plugin).
|
Behind the scenes, we are using Webpack's ["copy-webpack-plugin"](https://github.com/webpack-contrib/copy-webpack-plugin).
|
||||||
|
|
||||||
## Best Practices
|
## Best Practices
|
||||||
|
|
||||||
Because assets in this folder are bypassing the javascript module system, **this folder should be used sparingly** for assets such as favicons, robots.txt, manifests, libraries incompatible with Webpack, etc.
|
Because assets in this folder are bypassing the javascript module system, **this folder should be used sparingly** for assets such as favicons, robots.txt, manifests, libraries incompatible with Webpack, etc.
|
||||||
|
|
||||||
In general, it's best to import files directly into a template, page, or component. This allows Webpack to include that file in the bundle, which ensures Webpack will correctly process and move assets into the distribution folder, providing error checks and correct paths along the way.
|
In general, it's best to import files directly into a template, page, or component. This allows Webpack to include that file in the bundle, which ensures Webpack will correctly process and move assets into the distribution folder, providing error checks and correct paths along the way.
|
||||||
|
|
||||||
### Example Asset Import with Webpack
|
### Example Asset Import with Webpack
|
||||||
|
|
||||||
Instead of handling our logo image as a static file per the example above, we can do the following:
|
Instead of handling our logo image as a static file per the example above, we can do the following:
|
||||||
|
|
||||||
```
|
```
|
||||||
import React from "react"
|
import React from "react"
|
||||||
import logo from "./my-logo.jpg"
|
import logo from "./my-logo.jpg"
|
||||||
|
|||||||
@@ -1,16 +1,18 @@
|
|||||||
import ReactDOM from 'react-dom'
|
import ReactDOM from 'react-dom'
|
||||||
import { RedwoodProvider, FatalErrorBoundary } from '@redwoodjs/web'
|
|
||||||
import FatalErrorPage from 'src/pages/FatalErrorPage'
|
|
||||||
|
|
||||||
|
import { FatalErrorBoundary } from '@redwoodjs/web'
|
||||||
|
import { RedwoodApolloProvider } from '@redwoodjs/web/apollo'
|
||||||
|
|
||||||
|
import FatalErrorPage from 'src/pages/FatalErrorPage'
|
||||||
import Routes from 'src/Routes'
|
import Routes from 'src/Routes'
|
||||||
|
|
||||||
import './index.css'
|
import './index.css'
|
||||||
|
|
||||||
ReactDOM.render(
|
ReactDOM.render(
|
||||||
<FatalErrorBoundary page={FatalErrorPage}>
|
<FatalErrorBoundary page={FatalErrorPage}>
|
||||||
<RedwoodProvider>
|
<RedwoodApolloProvider>
|
||||||
<Routes />
|
<Routes />
|
||||||
</RedwoodProvider>
|
</RedwoodApolloProvider>
|
||||||
</FatalErrorBoundary>,
|
</FatalErrorBoundary>,
|
||||||
document.getElementById('redwood-app')
|
document.getElementById('redwood-app')
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
export default () => (
|
import { Link, routes } from '@redwoodjs/router'
|
||||||
|
|
||||||
|
const AboutPage = () => (
|
||||||
<main>
|
<main>
|
||||||
<style
|
<style
|
||||||
dangerouslySetInnerHTML={{
|
dangerouslySetInnerHTML={{
|
||||||
@@ -36,9 +38,16 @@ export default () => (
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<section>
|
<section>
|
||||||
<h1>
|
<h1>About</h1>
|
||||||
<span>About RedwoodJS</span>
|
<p>
|
||||||
</h1>
|
Find me in <code>./web/src/pages/AboutPage/AboutPage.js</code>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
My default route is named <code>about</code>, link to me with `
|
||||||
|
<Link to={routes.about()}>About</Link>`
|
||||||
|
</p>
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
export default AboutPage
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
export default () => (
|
import { Link, routes } from '@redwoodjs/router'
|
||||||
|
|
||||||
|
const HomePage = () => (
|
||||||
<main>
|
<main>
|
||||||
<style
|
<style
|
||||||
dangerouslySetInnerHTML={{
|
dangerouslySetInnerHTML={{
|
||||||
@@ -36,9 +38,16 @@ export default () => (
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<section>
|
<section>
|
||||||
<h1>
|
<h1>Welcome to RedwoodJS!</h1>
|
||||||
<span>Welcome to RedwoodJS!</span>
|
<p>
|
||||||
</h1>
|
Find me in <code>./web/src/pages/HomePage/HomePage.js</code>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
My default route is named <code>home</code>, link to me with `
|
||||||
|
<Link to={routes.home()}>Home</Link>`
|
||||||
|
</p>
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
export default HomePage
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
import HomePage from './HomePage'
|
||||||
|
|
||||||
|
export const generated = () => {
|
||||||
|
return <HomePage />
|
||||||
|
}
|
||||||
|
|
||||||
|
export default { title: 'Pages/HomePage' }
|
||||||
File diff suppressed because it is too large
Load Diff
2
examples/zola/.gitignore
vendored
Normal file
2
examples/zola/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
/public
|
||||||
|
/.vercel
|
||||||
16
examples/zola/config.toml
Normal file
16
examples/zola/config.toml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# The URL the site will be built for
|
||||||
|
base_url = "/"
|
||||||
|
|
||||||
|
# Whether to automatically compile all Sass files in the sass directory
|
||||||
|
compile_sass = true
|
||||||
|
|
||||||
|
# Whether to build a search index to be used later on by a JavaScript library
|
||||||
|
build_search_index = false
|
||||||
|
|
||||||
|
[markdown]
|
||||||
|
# Whether to do syntax highlighting
|
||||||
|
# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola
|
||||||
|
highlight_code = false
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
# Put all your custom variables here
|
||||||
6
examples/zola/content/blog/_index.md
Normal file
6
examples/zola/content/blog/_index.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
+++
|
||||||
|
title = "List of blog posts"
|
||||||
|
sort_by = "date"
|
||||||
|
template = "blog.html"
|
||||||
|
page_template = "blog-page.html"
|
||||||
|
+++
|
||||||
6
examples/zola/content/blog/first.md
Normal file
6
examples/zola/content/blog/first.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
+++
|
||||||
|
title = "My first post"
|
||||||
|
date = 2019-11-27
|
||||||
|
+++
|
||||||
|
|
||||||
|
This is my first blog post.
|
||||||
6
examples/zola/content/blog/second.md
Normal file
6
examples/zola/content/blog/second.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
+++
|
||||||
|
title = "My second post"
|
||||||
|
date = 2019-11-28
|
||||||
|
+++
|
||||||
|
|
||||||
|
This is my second blog post.
|
||||||
18
examples/zola/templates/base.html
Normal file
18
examples/zola/templates/base.html
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>MyBlog</title>
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.8.0/css/bulma.min.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<section class="section">
|
||||||
|
<div class="container">
|
||||||
|
{% block content %} {% endblock %}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
9
examples/zola/templates/blog-page.html
Normal file
9
examples/zola/templates/blog-page.html
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1 class="title">
|
||||||
|
{{ page.title }}
|
||||||
|
</h1>
|
||||||
|
<p class="subtitle"><strong>{{ page.date }}</strong></p>
|
||||||
|
{{ page.content | safe }}
|
||||||
|
{% endblock content %}
|
||||||
12
examples/zola/templates/blog.html
Normal file
12
examples/zola/templates/blog.html
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1 class="title">
|
||||||
|
{{ section.title }}
|
||||||
|
</h1>
|
||||||
|
<ul>
|
||||||
|
{% for page in section.pages %}
|
||||||
|
<li><a href="{{ page.permalink | safe }}">{{ page.title }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endblock content %}
|
||||||
8
examples/zola/templates/index.html
Normal file
8
examples/zola/templates/index.html
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1 class="title">
|
||||||
|
This is my blog made with Zola.
|
||||||
|
</h1>
|
||||||
|
<p>Click <a href="/blog/">here</a> to see my posts.</p>
|
||||||
|
{% endblock content %}
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
"publish-from-github": "./utils/publish.sh",
|
"publish-from-github": "./utils/publish.sh",
|
||||||
"changelog": "node utils/changelog.js",
|
"changelog": "node utils/changelog.js",
|
||||||
"build": "node utils/run.js build all",
|
"build": "node utils/run.js build all",
|
||||||
"now-build": "mkdir -p public && echo '<a href=\"https://vercel.com/import\">Import</a>' > public/output.html",
|
"vercel-build": "mkdir -p public && echo '<a href=\"https://vercel.com/import\">Import</a>' > public/output.html",
|
||||||
"test-unit": "node utils/run.js test-unit",
|
"test-unit": "node utils/run.js test-unit",
|
||||||
"test-integration-cli": "node utils/run.js test-integration-cli",
|
"test-integration-cli": "node utils/run.js test-integration-cli",
|
||||||
"test-integration-once": "node utils/run.js test-integration-once",
|
"test-integration-once": "node utils/run.js test-integration-once",
|
||||||
@@ -114,7 +114,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"files": [
|
"files": [
|
||||||
"packages/now-cli/**/*"
|
"packages/cli/**/*"
|
||||||
],
|
],
|
||||||
"rules": {
|
"rules": {
|
||||||
"lines-between-class-members": 0,
|
"lines-between-class-members": 0,
|
||||||
@@ -134,7 +134,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"files": [
|
"files": [
|
||||||
"packages/now-client/**/*"
|
"packages/client/**/*"
|
||||||
],
|
],
|
||||||
"rules": {
|
"rules": {
|
||||||
"prefer-const": 0,
|
"prefer-const": 0,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@vercel/build-utils",
|
"name": "@vercel/build-utils",
|
||||||
"version": "2.9.0",
|
"version": "2.10.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"main": "./dist/index.js",
|
"main": "./dist/index.js",
|
||||||
"types": "./dist/index.d.js",
|
"types": "./dist/index.d.js",
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
"@types/node-fetch": "^2.1.6",
|
"@types/node-fetch": "^2.1.6",
|
||||||
"@types/semver": "6.0.0",
|
"@types/semver": "6.0.0",
|
||||||
"@types/yazl": "^2.4.1",
|
"@types/yazl": "^2.4.1",
|
||||||
"@vercel/frameworks": "0.2.0",
|
"@vercel/frameworks": "0.3.1",
|
||||||
"@vercel/ncc": "0.24.0",
|
"@vercel/ncc": "0.24.0",
|
||||||
"aggregate-error": "3.0.1",
|
"aggregate-error": "3.0.1",
|
||||||
"async-retry": "1.2.3",
|
"async-retry": "1.2.3",
|
||||||
@@ -2,10 +2,9 @@ import minimatch from 'minimatch';
|
|||||||
import { valid as validSemver } from 'semver';
|
import { valid as validSemver } from 'semver';
|
||||||
import { parse as parsePath, extname } from 'path';
|
import { parse as parsePath, extname } from 'path';
|
||||||
import { Route, Source } from '@vercel/routing-utils';
|
import { Route, Source } from '@vercel/routing-utils';
|
||||||
import _frameworks, { Framework } from '@vercel/frameworks';
|
import frameworkList, { Framework } from '@vercel/frameworks';
|
||||||
import { PackageJson, Builder, Config, BuilderFunctions } from './types';
|
import { PackageJson, Builder, Config, BuilderFunctions } from './types';
|
||||||
import { isOfficialRuntime } from './';
|
import { isOfficialRuntime } from './';
|
||||||
const frameworkList = _frameworks as Framework[];
|
|
||||||
const slugToFramework = new Map<string | null, Framework>(
|
const slugToFramework = new Map<string | null, Framework>(
|
||||||
frameworkList.map(f => [f.slug, f])
|
frameworkList.map(f => [f.slug, f])
|
||||||
);
|
);
|
||||||
@@ -312,11 +311,16 @@ export async function detectBuilders(
|
|||||||
if (frontendBuilder) {
|
if (frontendBuilder) {
|
||||||
builders.push(frontendBuilder);
|
builders.push(frontendBuilder);
|
||||||
|
|
||||||
if (hasNextApiFiles && apiBuilders.length) {
|
if (
|
||||||
|
hasNextApiFiles &&
|
||||||
|
apiBuilders.some(b => isOfficialRuntime('node', b.use))
|
||||||
|
) {
|
||||||
warnings.push({
|
warnings.push({
|
||||||
code: 'conflicting_files',
|
code: 'conflicting_files',
|
||||||
message:
|
message:
|
||||||
'It is not possible to use `api` and `pages/api` at the same time, please only use one option',
|
'When using Next.js, it is recommended to place Node.js Serverless Functions inside of the `pages/api` (provided by Next.js) directory instead of `api` (provided by Vercel).',
|
||||||
|
link: 'https://nextjs.org/docs/api-routes/introduction',
|
||||||
|
action: 'Learn More',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -945,8 +949,8 @@ function getRouteResult(
|
|||||||
const rewriteRoutes: Route[] = [];
|
const rewriteRoutes: Route[] = [];
|
||||||
const errorRoutes: Route[] = [];
|
const errorRoutes: Route[] = [];
|
||||||
const framework = frontendBuilder?.config?.framework || '';
|
const framework = frontendBuilder?.config?.framework || '';
|
||||||
const use = frontendBuilder?.use || '';
|
const isNextjs =
|
||||||
const isNextjs = framework === 'nextjs' || use.startsWith('@vercel/next');
|
framework === 'nextjs' || isOfficialRuntime('next', frontendBuilder?.use);
|
||||||
const ignoreRuntimes = slugToFramework.get(framework)?.ignoreRuntimes;
|
const ignoreRuntimes = slugToFramework.get(framework)?.ignoreRuntimes;
|
||||||
|
|
||||||
if (apiRoutes && apiRoutes.length > 0) {
|
if (apiRoutes && apiRoutes.length > 0) {
|
||||||
@@ -3,7 +3,7 @@ import { DetectorFilesystem } from './detectors/filesystem';
|
|||||||
|
|
||||||
export interface DetectFrameworkOptions {
|
export interface DetectFrameworkOptions {
|
||||||
fs: DetectorFilesystem;
|
fs: DetectorFilesystem;
|
||||||
frameworkList: Framework[];
|
frameworkList: readonly Framework[];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function matches(fs: DetectorFilesystem, framework: Framework) {
|
async function matches(fs: DetectorFilesystem, framework: Framework) {
|
||||||
@@ -51,8 +51,8 @@ export default async function glob(
|
|||||||
stat,
|
stat,
|
||||||
`statCache does not contain value for ${relativePath} (resolved to ${fsPath})`
|
`statCache does not contain value for ${relativePath} (resolved to ${fsPath})`
|
||||||
);
|
);
|
||||||
if (stat.isFile()) {
|
const isSymlink = options.symlinks![fsPath];
|
||||||
const isSymlink = options.symlinks![fsPath];
|
if (isSymlink || stat.isFile()) {
|
||||||
if (isSymlink) {
|
if (isSymlink) {
|
||||||
stat = await lstat(fsPath);
|
stat = await lstat(fsPath);
|
||||||
}
|
}
|
||||||
95
packages/build-utils/src/fs/node-version.ts
Normal file
95
packages/build-utils/src/fs/node-version.ts
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
import { intersects, validRange } from 'semver';
|
||||||
|
import { NodeVersion } from '../types';
|
||||||
|
import { NowBuildError } from '../errors';
|
||||||
|
import debug from '../debug';
|
||||||
|
|
||||||
|
const allOptions = [
|
||||||
|
{ major: 14, range: '14.x', runtime: 'nodejs14.x' },
|
||||||
|
{ major: 12, range: '12.x', runtime: 'nodejs12.x' },
|
||||||
|
{
|
||||||
|
major: 10,
|
||||||
|
range: '10.x',
|
||||||
|
runtime: 'nodejs10.x',
|
||||||
|
discontinueDate: new Date('2021-04-20'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
major: 8,
|
||||||
|
range: '8.10.x',
|
||||||
|
runtime: 'nodejs8.10',
|
||||||
|
discontinueDate: new Date('2020-01-06'),
|
||||||
|
},
|
||||||
|
] as const;
|
||||||
|
|
||||||
|
function getHint(isAuto: boolean) {
|
||||||
|
const { major, range } = getLatestNodeVersion();
|
||||||
|
return isAuto
|
||||||
|
? `Please set Node.js Version to ${range} in your Project Settings to use Node.js ${major}.`
|
||||||
|
: `Please set "engines": { "node": "${range}" } in your \`package.json\` file to use Node.js ${major}.`;
|
||||||
|
}
|
||||||
|
|
||||||
|
const upstreamProvider =
|
||||||
|
'This change is the result of a decision made by an upstream infrastructure provider (AWS).';
|
||||||
|
|
||||||
|
export function getLatestNodeVersion() {
|
||||||
|
return allOptions[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getDiscontinuedNodeVersions(): NodeVersion[] {
|
||||||
|
return allOptions.filter(isDiscontinued);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getSupportedNodeVersion(
|
||||||
|
engineRange: string | undefined,
|
||||||
|
isAuto: boolean
|
||||||
|
): Promise<NodeVersion> {
|
||||||
|
let selection: NodeVersion = getLatestNodeVersion();
|
||||||
|
|
||||||
|
if (engineRange) {
|
||||||
|
const found =
|
||||||
|
validRange(engineRange) &&
|
||||||
|
allOptions.some(o => {
|
||||||
|
// the array is already in order so return the first
|
||||||
|
// match which will be the newest version of node
|
||||||
|
selection = o;
|
||||||
|
return intersects(o.range, engineRange);
|
||||||
|
});
|
||||||
|
if (!found) {
|
||||||
|
throw new NowBuildError({
|
||||||
|
code: 'BUILD_UTILS_NODE_VERSION_INVALID',
|
||||||
|
link: 'http://vercel.link/node-version',
|
||||||
|
message: `Found invalid Node.js Version: "${engineRange}". ${getHint(
|
||||||
|
isAuto
|
||||||
|
)}`,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isDiscontinued(selection)) {
|
||||||
|
const intro = `Node.js Version "${selection.range}" is discontinued and must be upgraded.`;
|
||||||
|
throw new NowBuildError({
|
||||||
|
code: 'BUILD_UTILS_NODE_VERSION_DISCONTINUED',
|
||||||
|
link: 'http://vercel.link/node-version',
|
||||||
|
message: `${intro} ${getHint(isAuto)} ${upstreamProvider}`,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
debug(`Selected Node.js ${selection.range}`);
|
||||||
|
|
||||||
|
if (selection.discontinueDate) {
|
||||||
|
const d = selection.discontinueDate.toISOString().split('T')[0];
|
||||||
|
console.warn(
|
||||||
|
`Error: Node.js version ${
|
||||||
|
selection.range
|
||||||
|
} is deprecated. Deployments created on or after ${d} will fail to build. ${getHint(
|
||||||
|
isAuto
|
||||||
|
)} ${upstreamProvider}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return selection;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isDiscontinued({ discontinueDate }: NodeVersion): boolean {
|
||||||
|
const today = Date.now();
|
||||||
|
return discontinueDate !== undefined && discontinueDate.getTime() <= today;
|
||||||
|
}
|
||||||
@@ -5,7 +5,6 @@ import debug from '../debug';
|
|||||||
import spawn from 'cross-spawn';
|
import spawn from 'cross-spawn';
|
||||||
import { SpawnOptions } from 'child_process';
|
import { SpawnOptions } from 'child_process';
|
||||||
import { deprecate } from 'util';
|
import { deprecate } from 'util';
|
||||||
import { cpus } from 'os';
|
|
||||||
import { NowBuildError } from '../errors';
|
import { NowBuildError } from '../errors';
|
||||||
import { Meta, PackageJson, NodeVersion, Config } from '../types';
|
import { Meta, PackageJson, NodeVersion, Config } from '../types';
|
||||||
import { getSupportedNodeVersion, getLatestNodeVersion } from './node-version';
|
import { getSupportedNodeVersion, getLatestNodeVersion } from './node-version';
|
||||||
@@ -177,16 +176,13 @@ export async function getNodeVersion(
|
|||||||
let { nodeVersion } = config;
|
let { nodeVersion } = config;
|
||||||
let isAuto = true;
|
let isAuto = true;
|
||||||
if (packageJson && packageJson.engines && packageJson.engines.node) {
|
if (packageJson && packageJson.engines && packageJson.engines.node) {
|
||||||
if (
|
const { node } = packageJson.engines;
|
||||||
nodeVersion &&
|
if (nodeVersion && nodeVersion !== node && !meta.isDev) {
|
||||||
nodeVersion !== packageJson.engines.node &&
|
|
||||||
!meta.isDev
|
|
||||||
) {
|
|
||||||
console.warn(
|
console.warn(
|
||||||
'Warning: Due to `engines` existing in your `package.json` file, the Node.js Version defined in your Project Settings will not apply. Learn More: http://vercel.link/node-version'
|
`Warning: Due to "engines": { "node": "${node}" } in your \`package.json\` file, the Node.js Version defined in your Project Settings ("${nodeVersion}") will not apply. Learn More: http://vercel.link/node-version`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
nodeVersion = packageJson.engines.node;
|
nodeVersion = node;
|
||||||
isAuto = false;
|
isAuto = false;
|
||||||
}
|
}
|
||||||
return getSupportedNodeVersion(nodeVersion, isAuto);
|
return getSupportedNodeVersion(nodeVersion, isAuto);
|
||||||
@@ -328,18 +324,7 @@ export async function runBundleInstall(
|
|||||||
assert(path.isAbsolute(destPath));
|
assert(path.isAbsolute(destPath));
|
||||||
const opts = { ...spawnOpts, cwd: destPath, prettyCommand: 'bundle install' };
|
const opts = { ...spawnOpts, cwd: destPath, prettyCommand: 'bundle install' };
|
||||||
|
|
||||||
await spawnAsync(
|
await spawnAsync('bundle', args.concat(['install']), opts);
|
||||||
'bundle',
|
|
||||||
args.concat([
|
|
||||||
'install',
|
|
||||||
'--no-prune',
|
|
||||||
'--retry',
|
|
||||||
'3',
|
|
||||||
'--jobs',
|
|
||||||
String(cpus().length || 1),
|
|
||||||
]),
|
|
||||||
opts
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function runPipInstall(
|
export async function runPipInstall(
|
||||||
@@ -403,7 +388,7 @@ export async function runPackageJsonScript(
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// Yarn v2 PnP mode may be activated, so force "node-modules" linker style
|
// Yarn v2 PnP mode may be activated, so force "node-modules" linker style
|
||||||
const env: typeof process.env = { ...spawnOpts?.env };
|
const env: typeof process.env = { ...process.env, ...spawnOpts?.env };
|
||||||
if (!env.YARN_NODE_LINKER) {
|
if (!env.YARN_NODE_LINKER) {
|
||||||
env.YARN_NODE_LINKER = 'node-modules';
|
env.YARN_NODE_LINKER = 'node-modules';
|
||||||
}
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user