diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000..961aa9c2 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,8 @@ +{ + "extends": [ + "plugin:@wordpress/eslint-plugin/es5" + ], + "env": { + "browser": true + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..fff7c8fa --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/node_modules +/vendor +package-lock.json +composer.lock diff --git a/.jscsrc b/.jscsrc deleted file mode 100644 index edf97acd..00000000 --- a/.jscsrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "preset": "wordpress", - "fileExtensions": [ ".js" ], - "excludeFiles": [ - "js/**.min.js" - ] -} diff --git a/.jshintignore b/.jshintignore deleted file mode 100644 index eef19b5c..00000000 --- a/.jshintignore +++ /dev/null @@ -1 +0,0 @@ -js/**.min.js diff --git a/.stylelintrc.json b/.stylelintrc.json new file mode 100644 index 00000000..1927566c --- /dev/null +++ b/.stylelintrc.json @@ -0,0 +1,12 @@ +{ + "extends": [ + "stylelint-config-wordpress/scss" + ], + "ignoreFiles": [ + "sass/_normalize.scss" + ], + "rules": { + "font-family-no-missing-generic-family-keyword": null, + "no-descending-specificity": null + } +} diff --git a/.travis.yml b/.travis.yml index 4840c9fe..61cc0a39 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,92 +4,67 @@ # For use with the Underscores WordPress theme. # @link https://github.com/Automattic/_s -# Ditch sudo and use containers. -# @link https://docs.travis-ci.com/user/migrating-from-legacy/#Why-migrate-to-container-based-infrastructure%3F -# @link https://docs.travis-ci.com/user/workers/container-based-infrastructure/#Routing-your-build-to-container-based-infrastructure -sudo: false +# Tell Travis CI which distro to use. dist: trusty +# Cache directories between builds. +# @link https://docs.travis-ci.com/user/caching/#arbitrary-directories +cache: + directories: + # Cache directory for npm. + - $HOME/.npm + # Cache directory for older Composer versions. + - $HOME/.composer/cache/files + # Cache directory for more recent Composer versions. + - $HOME/.cache/composer/files + # Declare project language. -# @link https://about.travis-ci.org/docs/user/languages/php/ -language: php +# @link https://docs.travis-ci.com/user/languages/php/ +language: + - php + +php: + - 5.6 + - 7.0 + - 7.1 + - 7.2 + - 7.3 -# Declare versions of PHP to use. Use one decimal max. -# @link https://docs.travis-ci.com/user/build-configuration/ matrix: - fast_finish: true + fast_finish: true + include: + - php: 7.4 + env: SNIFF=1 - include: - # Current $required_php_version for WordPress: 5.2.4 - # aliased to 5.2.17 - - php: '5.2' - dist: precise - # aliased to a recent 5.6.x version - - php: '5.6' - env: SNIFF=1 - # aliased to a recent 7.0.x version - - php: '7.0' - # aliased to a recent 7.2.x version - - php: '7.2' - # bleeding edge PHP - - php: 'nightly' +before_install: + # Speed up build time by disabling Xdebug. + - phpenv config-rm xdebug.ini || echo 'No xdebug config.' + # Download and install the latest long-term support release of node. + - nvm install --lts + # Install Composer dependencies. + - composer install + # Install NPM dependencies. + - npm install - allow_failures: - - php: 'nightly' - -# Use this to prepare the system to install prerequisites or dependencies. -# e.g. sudo apt-get update. -# Failures in this section will result in build status 'errored'. -# before_install: - -# Use this to prepare your build for testing. -# e.g. copy database configurations, environment variables, etc. -# Failures in this section will result in build status 'errored'. -before_script: - # Speed up build time by disabling Xdebug. - - phpenv config-rm xdebug.ini || echo 'No xdebug config.' - # Set up temporary paths. - - export PHPCS_DIR=/tmp/phpcs - - export WPCS_DIR=/tmp/wpcs - - export PHPCOMPAT_DIR=/tmp/phpcompatibility - # Install CodeSniffer for WordPress Coding Standards checks. - - if [[ "$SNIFF" == "1" ]]; then git clone -b master --depth 1 https://github.com/squizlabs/PHP_CodeSniffer.git $PHPCS_DIR; fi - # Install WordPress Coding Standards. - - if [[ "$SNIFF" == "1" ]]; then git clone -b 0.14.1 --depth 1 https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git $WPCS_DIR; fi - # Install PHP Compatibility sniffs. - - if [[ "$SNIFF" == "1" ]]; then git clone -b master --depth 1 https://github.com/wimg/PHPCompatibility.git $PHPCOMPAT_DIR; fi - # Set install path for PHPCS sniffs. - # @link https://github.com/squizlabs/PHP_CodeSniffer/blob/4237c2fc98cc838730b76ee9cee316f99286a2a7/CodeSniffer.php#L1941 - - if [[ "$SNIFF" == "1" ]]; then $PHPCS_DIR/bin/phpcs --config-set installed_paths $WPCS_DIR,$PHPCOMPAT_DIR; fi - # After CodeSniffer install you should refresh your path. - - if [[ "$SNIFF" == "1" ]]; then phpenv rehash; fi - # Install JSCS: JavaScript Code Style checker. - # @link http://jscs.info/ - - if [[ "$SNIFF" == "1" ]]; then npm install -g jscs; fi - # Install JSHint, a JavaScript Code Quality Tool. - # @link http://jshint.com/docs/ - - if [[ "$SNIFF" == "1" ]]; then npm install -g jshint; fi - # Pull in the WP Core jshint rules. - - if [[ "$SNIFF" == "1" ]]; then wget https://develop.svn.wordpress.org/trunk/.jshintrc; fi - -# Run test script commands. -# Default is specific to project language. -# All commands must exit with code 0 on success. Anything else is considered failure. script: - # Search for PHP syntax errors. - - find -L . -name '*.php' -print0 | xargs -0 -n 1 -P 4 php -l - # Run the theme through JSHint. - - if [[ "$SNIFF" == "1" ]]; then jshint .; fi - # Run the theme through JavaScript Code Style checker. - - if [[ "$SNIFF" == "1" ]]; then jscs .; fi - # WordPress Coding Standards. - # @link https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards - # @link https://pear.php.net/package/PHP_CodeSniffer/ - # Uses a custom ruleset based on WordPress. This ruleset is automatically - # picked up by PHPCS as it's named `phpcs.xml(.dist)`. - - if [[ "$SNIFF" == "1" ]]; then $PHPCS_DIR/bin/phpcs --runtime-set ignore_warnings_on_exit 1; fi + # Validate the composer.json file. + # @link https://getcomposer.org/doc/03-cli.md#validate + - composer validate --no-check-all --strict + + # Search for PHP syntax errors using PHP Parallel Lint. + # https://github.com/php-parallel-lint/PHP-Parallel-Lint + - composer lint:php + + # Check the PHP files with the coding standards documented in the phpcs.xml.dist file. + - if [[ "$SNIFF" == 1 ]]; then composer lint:wpcs; fi + + # Check the JS files with the lint-js script defined in the @wordpress/scripts package. + - if [[ "$SNIFF" == 1 ]]; then npm run lint:js; fi + + # Check the SCSS files with the lint-style script defined in the @wordpress/scripts package. + - if [[ "$SNIFF" == 1 ]]; then npm run lint:scss; fi # Receive notifications for build results. -# @link https://docs.travis-ci.com/user/notifications/#Email-notifications +# @link https://docs.travis-ci.com/user/notifications/#configuring-email-notifications notifications: email: false diff --git a/composer.json b/composer.json new file mode 100644 index 00000000..2199d47e --- /dev/null +++ b/composer.json @@ -0,0 +1,33 @@ +{ + "name": "automattic/underscores", + "type": "wordpress-theme", + "description": "Hi. I'm a starter theme called _s, or underscores, if you like. I'm a theme meant for hacking so don't use me as a Parent Theme. Instead try turning me into the next, most awesome, WordPress theme out there. That's what I'm here for.", + "keywords": [ + "WordPress", + "Themes" + ], + "homepage": "https://github.com/Automattic/_s", + "license": "GPL-2.0-or-later", + "authors": [ + { + "name": "Contributors", + "homepage": "https://github.com/Automattic/_s/graphs/contributors" + } + ], + "require": { + "php": ">=5.6" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2", + "wptrt/wpthemereview": "^0.2.1", + "php-parallel-lint/php-parallel-lint": "^1.1.0" + }, + "scripts": { + "lint:wpcs": "@php ./vendor/squizlabs/php_codesniffer/bin/phpcs --runtime-set testVersion 5.6-", + "lint:php": "@php ./vendor/bin/parallel-lint --exclude .git --exclude vendor ." + }, + "support": { + "issues": "https://github.com/Automattic/_s/issues", + "source": "https://github.com/Automattic/_s" + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..7465b0cd --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "underscores", + "version": "1.0.0", + "description": "Hi. I'm a starter theme called _s, or underscores, if you like. I'm a theme meant for hacking so don't use me as a Parent Theme. Instead try turning me into the next, most awesome, WordPress theme out there. That's what I'm here for.", + "author": "Automattic Theme Team", + "license": "GPL-2.0-or-later", + "keywords": [ + "WordPress", + "Theme" + ], + "homepage": "https://github.com/Automattic/_s#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/Automattic/_s.git" + }, + "bugs": { + "url": "https://github.com/Automattic/_s/issues" + }, + "devDependencies": { + "@wordpress/scripts": "^7.1.3" + }, + "scripts": { + "lint:scss": "wp-scripts lint-style 'sass/**/*.scss'", + "lint:js": "wp-scripts lint-js 'js/*.js'" + } +} diff --git a/phpcs.xml.dist b/phpcs.xml.dist index 578ce025..2105118f 100644 --- a/phpcs.xml.dist +++ b/phpcs.xml.dist @@ -1,9 +1,9 @@ - - - + + + A custom set of code standard rules to check for WordPress themes. @@ -28,21 +28,28 @@ - - + + . + + /vendor/* + /node_modules/* + - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + +