diff --git a/.editorconfig b/.editorconfig index 34ef2fd6f4..b2d2b37b01 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,39 +1,24 @@ +# This file is for unifying the coding style for different editors and IDEs +# editorconfig.org + # WordPress Coding Standards -# https://make.wordpress.org/core/handbook/best-practices/coding-standards/ +# https://developer.wordpress.org/coding-standards/wordpress-coding-standards/ root = true [*] charset = utf-8 end_of_line = lf -indent_size = 4 -tab_width = 4 -indent_style = tab insert_final_newline = true trim_trailing_whitespace = true +indent_style = tab -[*.md] -trim_trailing_whitespace = false +[*.yml] indent_style = space indent_size = 2 -[*.txt] +[*.md] trim_trailing_whitespace = false -[*.json] -indent_style = space -indent_size = 2 - -[.*rc] -insert_final_newline = false -indent_style = space -indent_size = 2 - -[*.yml] -insert_final_newline = false -quote_type = single -indent_style = space -indent_size = 2 - -[.github/CODEOWNERS] -indent_style = space +[*.txt] +end_of_line = crlf diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 7e6228d65a..46561b5c24 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -6,9 +6,9 @@ updates: interval: weekly open-pull-requests-limit: 10 labels: - - "no milestone" - - "[Type] Enhancement" - - "github_actions" + - 'no milestone' + - '[Type] Enhancement' + - 'github_actions' - package-ecosystem: npm directory: '/' @@ -16,9 +16,9 @@ updates: interval: weekly open-pull-requests-limit: 10 labels: - - "no milestone" - - "[Type] Enhancement" - - "javascript" + - 'no milestone' + - '[Type] Enhancement' + - 'javascript' - package-ecosystem: composer directory: '/' @@ -26,6 +26,6 @@ updates: interval: weekly open-pull-requests-limit: 10 labels: - - "no milestone" - - "[Type] Enhancement" - - "php" + - 'no milestone' + - '[Type] Enhancement' + - 'php' diff --git a/.github/workflows/deploy-plugins.yml b/.github/workflows/deploy-plugins.yml index 7a3c286d39..5c11d84013 100644 --- a/.github/workflows/deploy-plugins.yml +++ b/.github/workflows/deploy-plugins.yml @@ -47,7 +47,7 @@ jobs: echo "plugins=$(echo $PLUGINS | jq -c .)" >> $GITHUB_OUTPUT deploy: - name: "Deploy Plugin: ${{ matrix.plugin }}" + name: 'Deploy Plugin: ${{ matrix.plugin }}' needs: pre-run runs-on: ubuntu-latest permissions: @@ -131,7 +131,7 @@ jobs: with: step: start token: ${{ secrets.GITHUB_TOKEN }} - env: "wp.org plugin: ${{ matrix.plugin }}" + env: 'wp.org plugin: ${{ matrix.plugin }}' - name: Deploy Plugin - ${{ matrix.plugin }} if: steps.check-deployment.outputs.deploy == 'true' @@ -154,12 +154,12 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} status: ${{ job.status }} deployment_id: ${{ steps.wporg-deployment.outputs.deployment_id }} - env: "wp.org plugin: ${{ matrix.plugin }}" - env_url: "https://wordpress.org/plugins/${{ matrix.plugin }}/" + env: 'wp.org plugin: ${{ matrix.plugin }}' + env_url: 'https://wordpress.org/plugins/${{ matrix.plugin }}/' release-assets: name: Add release assets - needs: [ pre-run, deploy ] + needs: [pre-run, deploy] runs-on: ubuntu-latest permissions: actions: read diff --git a/.github/workflows/php-test-plugins.yml b/.github/workflows/php-test-plugins.yml index 4e58a117a1..6fd6655336 100644 --- a/.github/workflows/php-test-plugins.yml +++ b/.github/workflows/php-test-plugins.yml @@ -35,14 +35,14 @@ on: jobs: php-test-plugins: - name: "PHP ${{ matrix.php }} / WP ${{ matrix.wp }}" + name: 'PHP ${{ matrix.php }} / WP ${{ matrix.wp }}' runs-on: ubuntu-latest timeout-minutes: 20 strategy: fail-fast: false matrix: php: ['8.2', '8.1', '8.0', '7.4', '7.3', '7.2'] - wp: [ 'latest' ] + wp: ['latest'] include: - php: '7.4' wp: '6.5' diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000000..8061c69ade --- /dev/null +++ b/.prettierignore @@ -0,0 +1,14 @@ +# Files and folders related to build +/build +/node_modules +/vendor +/dist + +# Minified files +/*.min.js + +# Ignore Composer lock file +composer.lock + +# Ignore npm package lock file +package-lock.json diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 235376574a..0000000000 --- a/.prettierrc +++ /dev/null @@ -1 +0,0 @@ -"@wordpress/prettier-config" diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000000..c1a93d37f6 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,16 @@ +// Import the default config file and expose it in the project root. +// Useful for editor integrations. +const wpPrettierConfig = require( '@wordpress/prettier-config' ); + +module.exports = { + ...wpPrettierConfig, + overrides: [ + { + files: '*.yml', + options: { + useTabs: false, + tabWidth: 2, + }, + }, + ], +}; diff --git a/.wp-env.json b/.wp-env.json index 2c652e636f..9e5d6dec6a 100644 --- a/.wp-env.json +++ b/.wp-env.json @@ -1,24 +1,24 @@ { - "core": null, - "plugins": [ - "./plugins/optimization-detective", - "./plugins/auto-sizes", - "./plugins/dominant-color-images", - "./plugins/embed-optimizer", - "./plugins/image-prioritizer", - "./plugins/performance-lab", - "./plugins/speculation-rules", - "./plugins/web-worker-offloading", - "./plugins/webp-uploads" - ], - "env": { - "tests": { - "config": { - "FS_METHOD": "direct" - }, - "mappings": { - "/wp-content/plugins/performance": "." - } - } - } + "core": null, + "plugins": [ + "./plugins/optimization-detective", + "./plugins/auto-sizes", + "./plugins/dominant-color-images", + "./plugins/embed-optimizer", + "./plugins/image-prioritizer", + "./plugins/performance-lab", + "./plugins/speculation-rules", + "./plugins/web-worker-offloading", + "./plugins/webp-uploads" + ], + "env": { + "tests": { + "config": { + "FS_METHOD": "direct" + }, + "mappings": { + "/wp-content/plugins/performance": "." + } + } + } } diff --git a/composer.json b/composer.json index 9d9ea27a1d..5a4f84ef4e 100644 --- a/composer.json +++ b/composer.json @@ -1,137 +1,137 @@ { - "name": "wordpress/performance", - "description": "Performance plugin from the WordPress Performance Team, which is a collection of standalone performance features.", - "license": "GPL-2.0-or-later", - "type": "wordpress-plugin", - "keywords": [ - "performance", - "wordpress" - ], - "homepage": "https://wordpress.org/plugins/performance-lab/", - "support": { - "issues": "https://github.com/WordPress/performance/issues" - }, - "require": { - "php": "^7.2 || ^8.0", - "ext-json": "*" - }, - "suggest": { - "ext-imagick": "Required to use Modern Image Format's Dominant_Color_Image_Editor_Imagick class", - "ext-gd": "Required to use Modern Image Format's Dominant_Color_Image_Editor_GD class" - }, - "require-dev": { - "phpcompatibility/php-compatibility": "^9.3", - "phpstan/extension-installer": "^1.3", - "phpstan/phpstan": "^1.11", - "phpstan/phpstan-deprecation-rules": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "slevomat/coding-standard": "^8.0", - "squizlabs/php_codesniffer": "^3.9", - "szepeviktor/phpstan-wordpress": "^1.3", - "wp-coding-standards/wpcs": "^3.1", - "wp-phpunit/wp-phpunit": "^6.5", - "yoast/phpunit-polyfills": "^2.0", - "phpstan/php-8-stubs": "^0.4.0", - "phpstan/phpstan-strict-rules": "^1.6" - }, - "config": { - "allow-plugins": { - "dealerdirect/phpcodesniffer-composer-installer": true, - "phpstan/extension-installer": true - }, - "platform": { - "php": "7.2" - } - }, - "scripts": { - "format": "phpcbf --report-summary --report-source", - "format:all": [ - "@format", - "@format:auto-sizes", - "@format:dominant-color-images", - "@format:embed-optimizer", - "@format:image-prioritizer", - "@format:optimization-detective", - "@format:performance-lab", - "@format:speculation-rules", - "@format:web-worker-offloading", - "@format:webp-uploads" - ], - "format:auto-sizes": "@format -- ./plugins/auto-sizes --standard=./plugins/auto-sizes/phpcs.xml.dist", - "format:dominant-color-images": "@format -- ./plugins/dominant-color-images --standard=./plugins/dominant-color-images/phpcs.xml.dist", - "format:embed-optimizer": "@format -- ./plugins/embed-optimizer --standard=./plugins/embed-optimizer/phpcs.xml.dist", - "format:image-prioritizer": "@format -- ./plugins/image-prioritizer --standard=./plugins/image-prioritizer/phpcs.xml.dist", - "format:optimization-detective": "@format -- ./plugins/optimization-detective --standard=./plugins/optimization-detective/phpcs.xml.dist", - "format:performance-lab": "@format -- ./plugins/performance-lab --standard=./plugins/performance-lab/phpcs.xml.dist", - "format:speculation-rules": "@format -- ./plugins/speculation-rules --standard=./plugins/speculation-rules/phpcs.xml.dist", - "format:web-worker-offloading": "@format -- ./plugins/web-worker-offloading --standard=./plugins/web-worker-offloading/phpcs.xml.dist", - "format:webp-uploads": "@format -- ./plugins/webp-uploads --standard=./plugins/webp-uploads/phpcs.xml.dist", - "lint": "phpcs", - "lint:all": [ - "@lint", - "@lint:auto-sizes", - "@lint:dominant-color-images", - "@lint:embed-optimizer", - "@lint:image-prioritizer", - "@lint:optimization-detective", - "@lint:performance-lab", - "@lint:speculation-rules", - "@lint:web-worker-offloading", - "@lint:webp-uploads" - ], - "lint:auto-sizes": "@lint -- ./plugins/auto-sizes --standard=./plugins/auto-sizes/phpcs.xml.dist", - "lint:dominant-color-images": "@lint -- ./plugins/dominant-color-images --standard=./plugins/dominant-color-images/phpcs.xml.dist", - "lint:embed-optimizer": "@lint -- ./plugins/embed-optimizer --standard=./plugins/embed-optimizer/phpcs.xml.dist", - "lint:image-prioritizer": "@lint -- ./plugins/image-prioritizer --standard=./plugins/image-prioritizer/phpcs.xml.dist", - "lint:optimization-detective": "@lint -- ./plugins/optimization-detective --standard=./plugins/optimization-detective/phpcs.xml.dist", - "lint:performance-lab": "@lint -- ./plugins/performance-lab --standard=./plugins/performance-lab/phpcs.xml.dist", - "lint:speculation-rules": "@lint -- ./plugins/speculation-rules --standard=./plugins/speculation-rules/phpcs.xml.dist", - "lint:web-worker-offloading": "@lint -- ./plugins/web-worker-offloading --standard=./plugins/web-worker-offloading/phpcs.xml.dist", - "lint:webp-uploads": "@lint -- ./plugins/webp-uploads --standard=./plugins/webp-uploads/phpcs.xml.dist", - "phpstan": "phpstan analyse --memory-limit=2048M", - "test": "phpunit", - "test-multisite": [ - "WP_MULTISITE=1 phpunit --exclude-group=ms-excluded" - ], - "test-multisite:plugins": [ - "@test-multisite:auto-sizes", - "@test-multisite:dominant-color-images", - "@test-multisite:embed-optimizer", - "@test-multisite:image-prioritizer", - "@test-multisite:optimization-detective", - "@test-multisite:performance-lab", - "@test-multisite:speculation-rules", - "@test-multisite:web-worker-offloading", - "@test-multisite:webp-uploads" - ], - "test-multisite:auto-sizes": "@test-multisite --verbose --testsuite auto-sizes", - "test-multisite:dominant-color-images": "@test-multisite --verbose --testsuite dominant-color-images", - "test-multisite:embed-optimizer": "@test-multisite --verbose --testsuite embed-optimizer", - "test-multisite:image-prioritizer": "@test-multisite --verbose --testsuite image-prioritizer", - "test-multisite:optimization-detective": "@test-multisite --verbose --testsuite optimization-detective", - "test-multisite:performance-lab": "@test-multisite --verbose --testsuite performance-lab", - "test-multisite:speculation-rules": "@test-multisite --verbose --testsuite speculation-rules", - "test-multisite:web-worker-offloading": "@test-multisite --verbose --testsuite web-worker-offloading", - "test-multisite:webp-uploads": "@test-multisite --verbose --testsuite webp-uploads", - "test:plugins": [ - "@test:auto-sizes", - "@test:dominant-color-images", - "@test:embed-optimizer", - "@test:image-prioritizer", - "@test:optimization-detective", - "@test:performance-lab", - "@test:speculation-rules", - "@test:web-worker-offloading", - "@test:webp-uploads" - ], - "test:auto-sizes": "@test --verbose --testsuite auto-sizes", - "test:dominant-color-images": "@test --verbose --testsuite dominant-color-images", - "test:embed-optimizer": "@test --verbose --testsuite embed-optimizer", - "test:image-prioritizer": "@test --verbose --testsuite image-prioritizer", - "test:optimization-detective": "@test --verbose --testsuite optimization-detective", - "test:performance-lab": "@test --verbose --testsuite performance-lab", - "test:speculation-rules": "@test --verbose --testsuite speculation-rules", - "test:web-worker-offloading": "@test --verbose --testsuite web-worker-offloading", - "test:webp-uploads": "@test --verbose --testsuite webp-uploads" - } + "name": "wordpress/performance", + "description": "Performance plugin from the WordPress Performance Team, which is a collection of standalone performance features.", + "license": "GPL-2.0-or-later", + "type": "wordpress-plugin", + "keywords": [ + "performance", + "wordpress" + ], + "homepage": "https://wordpress.org/plugins/performance-lab/", + "support": { + "issues": "https://github.com/WordPress/performance/issues" + }, + "require": { + "php": "^7.2 || ^8.0", + "ext-json": "*" + }, + "suggest": { + "ext-imagick": "Required to use Modern Image Format's Dominant_Color_Image_Editor_Imagick class", + "ext-gd": "Required to use Modern Image Format's Dominant_Color_Image_Editor_GD class" + }, + "require-dev": { + "phpcompatibility/php-compatibility": "^9.3", + "phpstan/extension-installer": "^1.3", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-deprecation-rules": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "slevomat/coding-standard": "^8.0", + "squizlabs/php_codesniffer": "^3.9", + "szepeviktor/phpstan-wordpress": "^1.3", + "wp-coding-standards/wpcs": "^3.1", + "wp-phpunit/wp-phpunit": "^6.5", + "yoast/phpunit-polyfills": "^2.0", + "phpstan/php-8-stubs": "^0.4.0", + "phpstan/phpstan-strict-rules": "^1.6" + }, + "config": { + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true, + "phpstan/extension-installer": true + }, + "platform": { + "php": "7.2" + } + }, + "scripts": { + "format": "phpcbf --report-summary --report-source", + "format:all": [ + "@format", + "@format:auto-sizes", + "@format:dominant-color-images", + "@format:embed-optimizer", + "@format:image-prioritizer", + "@format:optimization-detective", + "@format:performance-lab", + "@format:speculation-rules", + "@format:web-worker-offloading", + "@format:webp-uploads" + ], + "format:auto-sizes": "@format -- ./plugins/auto-sizes --standard=./plugins/auto-sizes/phpcs.xml.dist", + "format:dominant-color-images": "@format -- ./plugins/dominant-color-images --standard=./plugins/dominant-color-images/phpcs.xml.dist", + "format:embed-optimizer": "@format -- ./plugins/embed-optimizer --standard=./plugins/embed-optimizer/phpcs.xml.dist", + "format:image-prioritizer": "@format -- ./plugins/image-prioritizer --standard=./plugins/image-prioritizer/phpcs.xml.dist", + "format:optimization-detective": "@format -- ./plugins/optimization-detective --standard=./plugins/optimization-detective/phpcs.xml.dist", + "format:performance-lab": "@format -- ./plugins/performance-lab --standard=./plugins/performance-lab/phpcs.xml.dist", + "format:speculation-rules": "@format -- ./plugins/speculation-rules --standard=./plugins/speculation-rules/phpcs.xml.dist", + "format:web-worker-offloading": "@format -- ./plugins/web-worker-offloading --standard=./plugins/web-worker-offloading/phpcs.xml.dist", + "format:webp-uploads": "@format -- ./plugins/webp-uploads --standard=./plugins/webp-uploads/phpcs.xml.dist", + "lint": "phpcs", + "lint:all": [ + "@lint", + "@lint:auto-sizes", + "@lint:dominant-color-images", + "@lint:embed-optimizer", + "@lint:image-prioritizer", + "@lint:optimization-detective", + "@lint:performance-lab", + "@lint:speculation-rules", + "@lint:web-worker-offloading", + "@lint:webp-uploads" + ], + "lint:auto-sizes": "@lint -- ./plugins/auto-sizes --standard=./plugins/auto-sizes/phpcs.xml.dist", + "lint:dominant-color-images": "@lint -- ./plugins/dominant-color-images --standard=./plugins/dominant-color-images/phpcs.xml.dist", + "lint:embed-optimizer": "@lint -- ./plugins/embed-optimizer --standard=./plugins/embed-optimizer/phpcs.xml.dist", + "lint:image-prioritizer": "@lint -- ./plugins/image-prioritizer --standard=./plugins/image-prioritizer/phpcs.xml.dist", + "lint:optimization-detective": "@lint -- ./plugins/optimization-detective --standard=./plugins/optimization-detective/phpcs.xml.dist", + "lint:performance-lab": "@lint -- ./plugins/performance-lab --standard=./plugins/performance-lab/phpcs.xml.dist", + "lint:speculation-rules": "@lint -- ./plugins/speculation-rules --standard=./plugins/speculation-rules/phpcs.xml.dist", + "lint:web-worker-offloading": "@lint -- ./plugins/web-worker-offloading --standard=./plugins/web-worker-offloading/phpcs.xml.dist", + "lint:webp-uploads": "@lint -- ./plugins/webp-uploads --standard=./plugins/webp-uploads/phpcs.xml.dist", + "phpstan": "phpstan analyse --memory-limit=2048M", + "test": "phpunit", + "test-multisite": [ + "WP_MULTISITE=1 phpunit --exclude-group=ms-excluded" + ], + "test-multisite:plugins": [ + "@test-multisite:auto-sizes", + "@test-multisite:dominant-color-images", + "@test-multisite:embed-optimizer", + "@test-multisite:image-prioritizer", + "@test-multisite:optimization-detective", + "@test-multisite:performance-lab", + "@test-multisite:speculation-rules", + "@test-multisite:web-worker-offloading", + "@test-multisite:webp-uploads" + ], + "test-multisite:auto-sizes": "@test-multisite --verbose --testsuite auto-sizes", + "test-multisite:dominant-color-images": "@test-multisite --verbose --testsuite dominant-color-images", + "test-multisite:embed-optimizer": "@test-multisite --verbose --testsuite embed-optimizer", + "test-multisite:image-prioritizer": "@test-multisite --verbose --testsuite image-prioritizer", + "test-multisite:optimization-detective": "@test-multisite --verbose --testsuite optimization-detective", + "test-multisite:performance-lab": "@test-multisite --verbose --testsuite performance-lab", + "test-multisite:speculation-rules": "@test-multisite --verbose --testsuite speculation-rules", + "test-multisite:web-worker-offloading": "@test-multisite --verbose --testsuite web-worker-offloading", + "test-multisite:webp-uploads": "@test-multisite --verbose --testsuite webp-uploads", + "test:plugins": [ + "@test:auto-sizes", + "@test:dominant-color-images", + "@test:embed-optimizer", + "@test:image-prioritizer", + "@test:optimization-detective", + "@test:performance-lab", + "@test:speculation-rules", + "@test:web-worker-offloading", + "@test:webp-uploads" + ], + "test:auto-sizes": "@test --verbose --testsuite auto-sizes", + "test:dominant-color-images": "@test --verbose --testsuite dominant-color-images", + "test:embed-optimizer": "@test --verbose --testsuite embed-optimizer", + "test:image-prioritizer": "@test --verbose --testsuite image-prioritizer", + "test:optimization-detective": "@test --verbose --testsuite optimization-detective", + "test:performance-lab": "@test --verbose --testsuite performance-lab", + "test:speculation-rules": "@test --verbose --testsuite speculation-rules", + "test:web-worker-offloading": "@test --verbose --testsuite web-worker-offloading", + "test:webp-uploads": "@test --verbose --testsuite webp-uploads" + } } diff --git a/package.json b/package.json index c51fcc3565..d4737a688b 100644 --- a/package.json +++ b/package.json @@ -1,69 +1,69 @@ { - "name": "performance", - "license": "GPL-2.0-or-later", - "repository": "git+https://github.com/WordPress/performance.git", - "engines": { - "node": ">=20.10.0", - "npm": ">=10.2.3" - }, - "dependencies": { - "@builder.io/partytown": "github:westonruter/partytown#add/wp-i18n-workaround", - "web-vitals": "4.2.3" - }, - "devDependencies": { - "@octokit/rest": "^21.0.2", - "@wordpress/env": "^10.9.0", - "@wordpress/prettier-config": "^4.9.0", - "@wordpress/scripts": "^30.1.0", - "commander": "12.1.0", - "copy-webpack-plugin": "^12.0.2", - "fast-glob": "^3.3.2", - "fs-extra": "^11.2.0", - "husky": "^9.1.6", - "lint-staged": "^15.2.10", - "lodash": "4.17.21", - "micromatch": "^4.0.8", - "npm-run-all": "^4.1.5", - "typescript": "^5.6.3", - "webpackbar": "^6.0.1" - }, - "scripts": { - "changelog": "./bin/plugin/cli.js changelog", - "since": "./bin/plugin/cli.js since", - "readme": "./bin/plugin/cli.js readme", - "versions": "./bin/plugin/cli.js versions", - "build": "wp-scripts build", - "build-plugins": "npm-run-all 'build:plugin:*'", - "build-plugins:zip": "npm-run-all 'build:plugin:* --env zip=true'", - "build:plugin:performance-lab": "webpack --mode production --env plugin=performance-lab", - "build:plugin:auto-sizes": "webpack --mode production --env plugin=auto-sizes", - "build:plugin:dominant-color-images": "webpack --mode production --env plugin=dominant-color-images", - "build:plugin:embed-optimizer": "webpack --mode production --env plugin=embed-optimizer", - "build:plugin:image-prioritizer": "webpack --mode production --env plugin=image-prioritizer", - "build:plugin:optimization-detective": "webpack --mode production --env plugin=optimization-detective", - "build:plugin:speculation-rules": "webpack --mode production --env plugin=speculation-rules", - "build:plugin:web-worker-offloading": "webpack --mode production --env plugin=web-worker-offloading", - "build:plugin:webp-uploads": "webpack --mode production --env plugin=webp-uploads", - "generate-pending-release-diffs": "bin/generate-pending-release-diffs.sh", - "format-js": "wp-scripts format", - "lint-js": "wp-scripts lint-js", - "tsc": "tsc", - "format-php": "composer format:all", - "phpstan": "composer phpstan", - "lint-php": "composer lint:all", - "test-php": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:plugins", - "test-php-watch": "./bin/test-php-watch.sh", - "test-php-multisite": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test-multisite:plugins", - "test-php:performance-lab": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:performance-lab", - "test-php:auto-sizes": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:auto-sizes", - "test-php:dominant-color-images": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:dominant-color-images", - "test-php:embed-optimizer": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:embed-optimizer", - "test-php:image-prioritizer": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:image-prioritizer", - "test-php:optimization-detective": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:optimization-detective", - "test-php:speculation-rules": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:speculation-rules", - "test-php:web-worker-offloading": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:web-worker-offloading", - "test-php:webp-uploads": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:webp-uploads", - "wp-env": "wp-env", - "prepare": "husky" - } + "name": "performance", + "license": "GPL-2.0-or-later", + "repository": "git+https://github.com/WordPress/performance.git", + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + }, + "dependencies": { + "@builder.io/partytown": "github:westonruter/partytown#add/wp-i18n-workaround", + "web-vitals": "4.2.3" + }, + "devDependencies": { + "@octokit/rest": "^21.0.2", + "@wordpress/env": "^10.9.0", + "@wordpress/prettier-config": "^4.9.0", + "@wordpress/scripts": "^30.1.0", + "commander": "12.1.0", + "copy-webpack-plugin": "^12.0.2", + "fast-glob": "^3.3.2", + "fs-extra": "^11.2.0", + "husky": "^9.1.6", + "lint-staged": "^15.2.10", + "lodash": "4.17.21", + "micromatch": "^4.0.8", + "npm-run-all": "^4.1.5", + "typescript": "^5.6.3", + "webpackbar": "^6.0.1" + }, + "scripts": { + "changelog": "./bin/plugin/cli.js changelog", + "since": "./bin/plugin/cli.js since", + "readme": "./bin/plugin/cli.js readme", + "versions": "./bin/plugin/cli.js versions", + "build": "wp-scripts build", + "build-plugins": "npm-run-all 'build:plugin:*'", + "build-plugins:zip": "npm-run-all 'build:plugin:* --env zip=true'", + "build:plugin:performance-lab": "webpack --mode production --env plugin=performance-lab", + "build:plugin:auto-sizes": "webpack --mode production --env plugin=auto-sizes", + "build:plugin:dominant-color-images": "webpack --mode production --env plugin=dominant-color-images", + "build:plugin:embed-optimizer": "webpack --mode production --env plugin=embed-optimizer", + "build:plugin:image-prioritizer": "webpack --mode production --env plugin=image-prioritizer", + "build:plugin:optimization-detective": "webpack --mode production --env plugin=optimization-detective", + "build:plugin:speculation-rules": "webpack --mode production --env plugin=speculation-rules", + "build:plugin:web-worker-offloading": "webpack --mode production --env plugin=web-worker-offloading", + "build:plugin:webp-uploads": "webpack --mode production --env plugin=webp-uploads", + "generate-pending-release-diffs": "bin/generate-pending-release-diffs.sh", + "format-js": "wp-scripts format", + "lint-js": "wp-scripts lint-js", + "tsc": "tsc", + "format-php": "composer format:all", + "phpstan": "composer phpstan", + "lint-php": "composer lint:all", + "test-php": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:plugins", + "test-php-watch": "./bin/test-php-watch.sh", + "test-php-multisite": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test-multisite:plugins", + "test-php:performance-lab": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:performance-lab", + "test-php:auto-sizes": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:auto-sizes", + "test-php:dominant-color-images": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:dominant-color-images", + "test-php:embed-optimizer": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:embed-optimizer", + "test-php:image-prioritizer": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:image-prioritizer", + "test-php:optimization-detective": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:optimization-detective", + "test-php:speculation-rules": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:speculation-rules", + "test-php:web-worker-offloading": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:web-worker-offloading", + "test-php:webp-uploads": "wp-env run tests-cli --env-cwd=/var/www/html/wp-content/plugins/performance composer test:webp-uploads", + "wp-env": "wp-env", + "prepare": "husky" + } } diff --git a/plugins.json b/plugins.json index 9fa07ba6e7..281e5d3863 100644 --- a/plugins.json +++ b/plugins.json @@ -1,13 +1,13 @@ { - "plugins": [ - "auto-sizes", - "dominant-color-images", - "embed-optimizer", - "image-prioritizer", - "optimization-detective", - "performance-lab", - "speculation-rules", - "web-worker-offloading", - "webp-uploads" - ] + "plugins": [ + "auto-sizes", + "dominant-color-images", + "embed-optimizer", + "image-prioritizer", + "optimization-detective", + "performance-lab", + "speculation-rules", + "web-worker-offloading", + "webp-uploads" + ] } diff --git a/plugins/performance-lab/.wordpress-org/blueprints/blueprint.json b/plugins/performance-lab/.wordpress-org/blueprints/blueprint.json index 01d0ee6f97..9dddee1e20 100644 --- a/plugins/performance-lab/.wordpress-org/blueprints/blueprint.json +++ b/plugins/performance-lab/.wordpress-org/blueprints/blueprint.json @@ -1,24 +1,22 @@ { - "$schema": "https://playground.wordpress.net/blueprint-schema.json", - "landingPage": "\/wp-admin\/admin.php?page=perflab-modules", - "phpExtensionBundles": [ - "kitchen-sink" - ], - "steps": [ - { - "step": "login", - "username": "admin", - "password": "password" - }, - { - "step": "installPlugin", - "pluginZipFile": { - "resource": "wordpress.org\/plugins", - "slug": "performance-lab" - }, - "options": { - "activate": true - } - } - ] + "$schema": "https://playground.wordpress.net/blueprint-schema.json", + "landingPage": "/wp-admin/admin.php?page=perflab-modules", + "phpExtensionBundles": [ "kitchen-sink" ], + "steps": [ + { + "step": "login", + "username": "admin", + "password": "password" + }, + { + "step": "installPlugin", + "pluginZipFile": { + "resource": "wordpress.org/plugins", + "slug": "performance-lab" + }, + "options": { + "activate": true + } + } + ] } diff --git a/tsconfig.json b/tsconfig.json index 137042b518..9c9a169614 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,18 +1,13 @@ { - "compilerOptions": { - "checkJs": true, - "noEmit": true, - "allowJs": true, - "target": "es2020", - "moduleResolution": "node", - "module": "esnext", - "skipLibCheck": true - }, - "include": [ - "plugins/**/*.js", - "plugins/**/*.ts", - ], - "exclude": [ - "plugins/*/build/*" - ] + "compilerOptions": { + "checkJs": true, + "noEmit": true, + "allowJs": true, + "target": "es2020", + "moduleResolution": "node", + "module": "esnext", + "skipLibCheck": true + }, + "include": [ "plugins/**/*.js", "plugins/**/*.ts" ], + "exclude": [ "plugins/*/build/*" ] }