Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: Move from yarn to pnpm #2602

Closed
wants to merge 28 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
7f8f629
Delete yarn.lock
FangSen9000 Aug 24, 2022
1a5363a
Add files via upload
FangSen9000 Aug 24, 2022
140df5c
Update package.json
FangSen9000 Aug 24, 2022
9c3bf72
Delete pnpm-workspace.yaml
FangSen9000 Aug 24, 2022
13f8fd5
Update develop.md
FangSen9000 Aug 24, 2022
30bd95a
Update front-end-e2e.md
FangSen9000 Aug 24, 2022
ca358de
Update install.md
FangSen9000 Aug 24, 2022
65a0264
Update pre-commit
FangSen9000 Aug 24, 2022
a02478d
Update .prettierignore
FangSen9000 Aug 24, 2022
cd17fea
Update auto-build-rpm.yml
FangSen9000 Aug 24, 2022
94928d3
Update frontend-e2e-test.yml
FangSen9000 Aug 24, 2022
06c438f
Update make-build.yaml
FangSen9000 Aug 24, 2022
3dd6109
Update test-frontend-multiple-node-build.yml
FangSen9000 Aug 24, 2022
57df6ad
Update Makefile
FangSen9000 Aug 24, 2022
1328488
Update Dockerfile
FangSen9000 Aug 24, 2022
a11943f
Update package.json
FangSen9000 Aug 24, 2022
7c0d89a
Update pnpm-lock.yaml
FangSen9000 Aug 24, 2022
3e9bf83
Update frontend-e2e-test.yml
FangSen9000 Aug 24, 2022
eab805d
Update frontend-e2e-test.yml
FangSen9000 Aug 24, 2022
93ef342
Update make-build.yaml
FangSen9000 Aug 24, 2022
5fef10f
Update test-frontend-multiple-node-build.yml
FangSen9000 Aug 24, 2022
17cb86b
Update Dockerfile
FangSen9000 Aug 24, 2022
be30722
Update Makefile
FangSen9000 Aug 24, 2022
17dc652
Update develop.md
FangSen9000 Aug 24, 2022
2c54fef
Update package.json
FangSen9000 Aug 24, 2022
e3f114d
Update pnpm-lock.yaml
FangSen9000 Aug 24, 2022
53e3c8d
Update package.json
FangSen9000 Aug 24, 2022
cb0a45f
Update .stylelintrc.js
FangSen9000 Aug 24, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/auto-build-rpm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
run: |
export VERSION=${{ steps.branch_env.outputs.version }}
sudo gem install --no-document fpm
git clone https://github.com/api7/apisix-build-tools.git
git clone https://github.com/FangSen9000/apisix-build-tools.git
FangSen9000 marked this conversation as resolved.
Show resolved Hide resolved
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that we should let the API7 community merge my changes to the build script before merging this pr.
api7/apisix-build-tools#232
(if I keep it as it is, the original warehouse that has not been changed will only report an error. In order to prove that my changes are effective, I link to my modified build script warehouse.)


# move codes under build tool
mkdir ./apisix-build-tools/apisix-dashboard
Expand Down
17 changes: 12 additions & 5 deletions .github/workflows/frontend-e2e-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,9 @@ jobs:
uses: actions/setup-node@v3
with:
node-version: 16.x
cache: 'yarn'
cache-dependency-path: web/yarn.lock

- name: Install PNPM
run: npm i -g [email protected]

- name: Setup golang environment
uses: actions/setup-go@v3
Expand Down Expand Up @@ -84,14 +85,20 @@ jobs:
cypress-${{ runner.os }}-cypress-cache0

- name: Install dependencies
run: yarn
run: pnpm install --unsafe-perm

- name: Install Cypress binary
run: pnpx cypress install

- run: pnpx browserslist@latest --update-db
- run: npx browserslist@latest --update-db

- name: Start frontend then test
run: |
yarn start-server-and-test 'cross-env SERVE_ENV=test UMI_UI=none MOCK=none SERVE_URL_TEST=http://localhost:9000 yarn start' http-get://localhost:8000 'cross-env CYPRESS_SERVE_ENV=test SERVE_URL_TEST=http://localhost:9000 yarn cypress run --spec "**/e2e/${{matrix.folderPrefix}}/**.cy.js"'
pnpm start-server-and-test 'cross-env SERVE_ENV=test UMI_UI=none MOCK=none SERVE_URL_TEST=http://localhost:9000 pnpm start' http-get://localhost:8000 'cross-env CYPRESS_SERVE_ENV=test SERVE_URL_TEST=http://localhost:9000 pnpm cypress run --spec "**/e2e/${{matrix.folderPrefix}}/**.cy.js"'

- name: Report e2e coverage
run: npx nyc report --reporter=text-summary
run: pnpx nyc report --reporter=text-summary

- name: Upload coverage to Codecov
run: |
Expand Down
12 changes: 10 additions & 2 deletions .github/workflows/make-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,16 @@ jobs:
uses: actions/setup-node@v3
with:
node-version: 16.x
cache: 'yarn'
cache-dependency-path: web/yarn.lock

- name: Install PNPM
run: npm i -g [email protected]

- name: Change the NPM Settings for PNPM
run: npm config set strict-peer-dependencies=false
- run: npm config set auto-install-peers=true

- name: Install dependencies
run: pnpm install --unsafe-perm

- name: Setup golang environment
uses: actions/setup-go@v3
Expand Down
15 changes: 10 additions & 5 deletions .github/workflows/test-frontend-multiple-node-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,18 +37,23 @@ jobs:
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: 'yarn'
cache-dependency-path: web/yarn.lock

- name: Install PNPM
run: npm i -g [email protected]

- name: Change the NPM Settings for PNPM
run: npm config set strict-peer-dependencies=false
- run: npm config set auto-install-peers=true

# Install dependencies
- name: Install dependencies
working-directory: web
run: CYPRESS_INSTALL_BINARY=0 yarn
run: CYPRESS_INSTALL_BINARY=0 pnpm install --unsafe-perm

- name: Lint
working-directory: web
run: yarn run lint:js && yarn run lint:style
run: pnpm lint:js && pnpm lint:style

- name: Build the Dashboard
working-directory: web
run: yarn build
run: pnpm build
12 changes: 9 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,15 @@ COPY --from=pre-build /usr/local/apisix-dashboard .

WORKDIR /usr/local/apisix-dashboard/web

RUN if [ "$ENABLE_PROXY" = "true" ] ; then yarn config set registry https://registry.npmmirror.com/ ; fi \
&& yarn install \
&& yarn build
RUN npm i pnpm -g

RUN npm config set strict-peer-dependencies=false

RUN npm config set auto-install-peers=true

RUN if [ "$ENABLE_PROXY" = "true" ] ; then pnpm config set registry https://registry.npmmirror.com/ ; fi \
&& pnpm install --unsafe-perm \
&& pnpm build

FROM alpine:latest as prod

Expand Down
17 changes: 11 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
SHELL := /bin/bash -o pipefail
UNAME ?= $(shell uname)
YARN_EXEC ?= $(shell which yarn)
PNPM_EXEC ?= $(shell which pnpm)
GO_EXEC ?= $(shell which go)

VERSION ?= latest
Expand All @@ -36,13 +37,13 @@ help:
### build: Build the Apache APISIX Dashboard, including web and manager-api
.PHONY: build
build: web-default api-default
api/build.sh && cd ./web && export CYPRESS_INSTALL_BINARY=0 && yarn install --ignore-scripts && yarn build && mkdir -p ../output/logs
api/build.sh && cd ./web && export CYPRESS_INSTALL_BINARY=0 && pnpm install --unsafe-perm --ignore-scripts && pnpm build && mkdir -p ../output/logs


.PHONY: web-default
web-default:
ifeq ("$(wildcard $(YARN_EXEC))", "")
@echo "ERROR: Need to install yarn first"
ifeq ("$(wildcard $(PNPM_EXEC))", "")
@echo "ERROR: Need to install pnpm first"
exit 1
endif

Expand Down Expand Up @@ -121,12 +122,16 @@ release-src:
--exclude release \
--exclude api/internal/core/store/validate_mock.go \
--exclude api/internal/core/storage/storage_mock.go \
.
./api \
./licenses \
./web \
LICENSE \
Makefile \
NOTICE \
*.md

gpg --batch --yes --armor --detach-sig $(RELEASE_SRC).tgz
shasum -a 512 $(RELEASE_SRC).tgz > $(RELEASE_SRC).tgz.sha512

mkdir -p release
mv $(RELEASE_SRC).tgz release/$(RELEASE_SRC).tgz
mv $(RELEASE_SRC).tgz.asc release/$(RELEASE_SRC).tgz.asc
mv $(RELEASE_SRC).tgz.sha512 release/$(RELEASE_SRC).tgz.sha512
20 changes: 15 additions & 5 deletions docs/en/latest/develop.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,14 +81,24 @@ If you don't want to create the file, you can also export the variable.
export SERVE_URL_DEV=http://localhost:9000
```

3. Launch development mode
3. Launch development mode [(pnpm)](https://pnpm.io/installation)

```sh
$ yarn install
```shell
# You can also use pnpm as a tool to download dependent packages.
$ pnpm install --unsafe-perm

$ pnpm start

# If some dependent packages are not installed, use the following command. The higher version of NPM forbids automatic installation of peer-to-peer dependencies, but we need them, so conflicts arise.

# In In the .npmrc configuration file, add strict peer dependencies = false, which means that the strict peer dependency mode will be turned off.
$ npm config set strict-peer-dependencies=false

# Change it to true if you want to automatically install peer dependencies.
$ npm config set auto-install-peers=true

$ yarn start
```

> If there is an error about gyp during yarn install, please ignore it and go ahead!
> If there is an error about gyp during pnpm install, please ignore it and go ahead! If monaco-editor cannot be found during startup, please go to the original address of the file and copy it .public, you can use the command 'find -name monaco-editor'

4. If writing an front end E2E test, please refer to the [Front End E2E Writing Guide](./front-end-e2e.md)
6 changes: 3 additions & 3 deletions docs/en/latest/front-end-e2e.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ This project uses [Cypress](https://www.cypress.io/) as the front-end E2E test f
2. Open Cypress test-runner. For the use of test-runner, please refer to [test-runner](https://docs.cypress.io/guides/core-concepts/test-runner.html#) Overview.

```sh
yarn cypress:open-dev
pnpm cypress:open-dev
```

3. Write your test examples: please refer to the test examples in the `/web/cypress` directory, or see [RWA](https://github.com/cypress-io/cypress-realworld-app) for more examples.
Expand All @@ -37,12 +37,12 @@ To make it easy for users to develop front-end E2E cases, we use the remote mana

1. Start the local manager-api service, please refer to [develop](./develop.md) manager-api section.

2. To start the front-end project locally, please refer to [develop](./develop.md) web section. NOTE: You need to change `yarn start` to `yarn start:e2e` when you start.
2. To start the front-end project locally, please refer to [develop](./develop.md) web section. NOTE: You need to change `pnpm start` to `pnpm start:e2e` when you start.

3. Open Cypress test-runner.

```sh
yarn cypress:open
pnpm cypress:open
```

Reference links:
Expand Down
2 changes: 1 addition & 1 deletion docs/en/latest/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ $ go env -w GOPROXY=https://goproxy.cn,direct
For `web`:

1. [Node.js](https://nodejs.org/en/download/) current LTS (14.x+)
2. [Yarn](https://yarnpkg.com/getting-started/install)
2. [Pnpm](https://pnpm.io/installation)

### Download {#source-download}

Expand Down
2 changes: 1 addition & 1 deletion web/.husky/pre-commit
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
. "$(dirname "$0")/_/husky.sh"

cd web
yarn lint-staged
pnpm lint-staged
2 changes: 1 addition & 1 deletion web/.prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@ Dockerfile*
LICENSE
.eslintcache
*.lock
yarn-error.log
pnpm-error.log
.history
CNAME
1 change: 0 additions & 1 deletion web/.stylelintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
*/
module.exports = {
extends: [
'stylelint-config-standard',
'stylelint-config-css-modules',
'stylelint-config-rational-order',
'stylelint-config-prettier',
Expand Down
57 changes: 37 additions & 20 deletions web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,41 +5,42 @@
"description": "Dashboard for Apache APISIX",
"scripts": {
"prepare": "cd .. && husky install web/.husky",
"analyze": "cross-env ANALYZE=1 yarn run build",
"build": "cp -R ./node_modules/monaco-editor ./public/ && umi build",
"dev": "yarn run start:dev",
"fetch:blocks": "pro fetch-blocks --branch antd@4 && yarn run prettier",
"analyze": "cross-env ANALYZE=1 pnpm run build",
"build": "cp -R ./node_modules/.pnpm/[email protected]/node_modules/monaco-editor ./public/ && umi build",
"dev": "pnpm run start:dev",
"fetch:blocks": "pro fetch-blocks --branch antd@4 && pnpm run prettier",
"i18n-remove": "pro i18n-remove --locale=zh-CN --write",
"postinstall": "umi g tmp",
"lint": "umi g tmp && yarn run lint:js && yarn run lint:style && yarn run lint:prettier",
"lint": "umi g tmp && pnpm run lint:js && pnpm run lint:style && pnpm run lint:prettier",
"lint-staged": "lint-staged",
"lint-staged:js": "eslint --ext .js,.jsx,.ts,.tsx ",
"lint:fix": "eslint --fix --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src && yarn run lint:style",
"lint:fix": "eslint --fix --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src && pnpm run lint:style",
"lint:js": "eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src",
"lint:prettier": "prettier --check \"**/*\" --end-of-line auto",
"lint:style": "stylelint --fix \"src/**/*.less\"",
"prettier": "prettier -c --write \"**/*\"",
"site": "yarn run fetch:blocks && yarn run build",
"start": "cp -R ./node_modules/monaco-editor ./public/ && umi dev",
"start:e2e": "cross-env SERVE_ENV=test yarn run start",
"test:e2e": "start-server-and-test 'cross-env SERVE_ENV=test yarn start' http-get://localhost:8000 cypress:run-ci",
"test-plugin:e2e": "start-server-and-test 'cross-env SERVE_ENV=test yarn start' http-get://localhost:8000 cypress:run-plugin-ci",
"start:dev": "cross-env REACT_APP_ENV=dev MOCK=none yarn run start",
"start:no-mock": "cross-env MOCK=none yarn run start",
"start:no-ui": "cross-env UMI_UI=none yarn run start",
"start:pre": "cross-env REACT_APP_ENV=pre yarn run start",
"start:test": "cross-env REACT_APP_ENV=test MOCK=none yarn run start",
"site": "pnpm run fetch:blocks && pnpm run build",
"start": "cp -R ./node_modules/.pnpm/[email protected]/node_modules/monaco-editor ./public/ && umi dev",
"start:umi-dev": "umi dev",
"start:e2e": "cross-env SERVE_ENV=test pnpm run start",
"test:e2e": "start-server-and-test 'cross-env SERVE_ENV=test pnpm start' http-get://localhost:8000 cypress:run-ci",
"test-plugin:e2e": "start-server-and-test 'cross-env SERVE_ENV=test pnpm start' http-get://localhost:8000 cypress:run-plugin-ci",
"start:dev": "cross-env REACT_APP_ENV=dev MOCK=none pnpm run start",
"start:no-mock": "cross-env MOCK=none pnpm run start",
"start:no-ui": "cross-env UMI_UI=none pnpm run start",
"start:pre": "cross-env REACT_APP_ENV=pre pnpm run start",
"start:test": "cross-env REACT_APP_ENV=test MOCK=none pnpm run start",
"test:component": "umi test ./src/components",
"tsc": "tsc",
"cypress:open": "cross-env CYPRESS_SERVE_ENV=test cypress open",
"cypress:open-dev": "cross-env CYPRESS_SERVE_ENV=dev cypress open",
"cypress:run-ci": "cross-env CYPRESS_SERVE_ENV=test cypress run",
"cypress:run-plugin-ci": "cross-env CYPRESS_SERVE_ENV=test cypress run --spec 'cypress/e2e/plugin/*.cy.js'"
"cypress:run-ci": "cross-env CYPRESS_SERVE_ENV=test cypress run --browser chrome",
"cypress:run-plugin-ci": "cross-env CYPRESS_SERVE_ENV=test cypress run --browser chrome --spec 'cypress/e2e/plugin/*.cy.js'"
},
"license": "Apache-2.0",
"lint-staged": {
"**/*.less": "stylelint",
"**/*.{js,jsx,ts,tsx}": "yarn run lint-staged:js",
"**/*.{js,jsx,ts,tsx}": "pnpm run lint-staged:js",
"**/*.{js,jsx,tsx,ts,less,md,json}": [
"prettier --write"
]
Expand All @@ -55,17 +56,25 @@
"@ant-design/pro-table": "2.30.1",
"@antv/x6": "^1.18.5",
"@antv/x6-react-components": "^1.1.7",
"@babel/core": "^7.0.1",
"@babel/preset-env": "^7.0.0",
"@babel/runtime-corejs2": "^7.10.3",
"@monaco-editor/react": "^4.3.1",
"@rjsf/antd": "2.2.0",
"@rjsf/core": "2.2.0",
"@types/js-yaml": "^4.0.0",
"@umijs/route-utils": "^2.2.0",
"ajv": "^7.0.3",
"ajv-formats": "^1.5.1",
"antd": "^4.4.0",
"antd-dayjs-webpack-plugin": "1.0.0",
"babel-loader": "^8.0.2",
"base-64": "^1.0.0",
"classnames": "^2.2.6",
"dayjs": "1.8.28",
"core-js": "^2.5.7",
"dayjs": "1.8.30",
"dotenv": "^16.0.1",
"dva-core": "1.6.0-beta.7",
"file-saver": "^2.0.5",
"js-beautify": "^1.13.0",
"js-yaml": "^4.0.0",
Expand All @@ -76,17 +85,25 @@
"path-to-regexp": "2.4.0",
"qs": "^6.9.0",
"query-string": "^6.13.7",
"re2": "^1.15.4",
"react": "^16.8.6",
"react-copy-to-clipboard": "^5.0.3",
"react-device-detect": "^1.12.1",
"react-dom": "^16.8.6",
"react-helmet-async": "^1.0.4",
"react-is": ">= 16.8.0",
"react-router": "^4.3.1 || ^5.0.0",
"redbox-react": "1.x",
"redux": "4.x",
"start-server-and-test": "^1.11.5",
"styled-components": "^5.2.1",
"typescript": ">= 2.7",
"umi": "^3.1.2",
"umi-request": "^1.0.8",
"url-regex-safe": "^3.0.0",
"use-merge-value": "^1.0.1",
"uuid": "7.0.3",
"webpack": "^4.40.0 || ^5.0.0",
"yaml": "^1.10.0"
},
"devDependencies": {
Expand Down
Loading