WordPress.org

Make WordPress Core

Changeset 45745


Ignore:
Timestamp:
08/05/2019 07:09:14 AM (3 weeks ago)
Author:
pento
Message:

Build Tools: Add a WordPress Development Environment.

This commit adds the first iteration of a Docker-based config for setting up a local WordPress development environment.

Props pento, noisysocks, mcsf, pbearne, isabel_brison.
See #47767.

Location:
trunk
Files:
7 added
5 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/.travis.yml

    r45607 r45745  
    1 sudo: false
    2 dist: trusty
    31language: php
     2services:
     3  - docker
     4  - mysql
     5
     6addons:
     7  apt:
     8    packages:
     9      - docker-ce
     10
    411cache:
    512  apt: true
     
    815    - vendor
    916    - $HOME/.composer/cache
     17
    1018env:
    1119  global:
    12     - WP_TRAVISCI=travis:phpunit
     20    - LOCAL_DIR=build
     21
    1322matrix:
    1423  include:
    15   - php: 7.2
    16     env: WP_TRAVISCI=e2e
    17   - php: 7.2
    18     env: WP_TRAVISCI=travis:phpcs
    19   - php: 7.1
    20     env: WP_TRAVISCI=travis:js
     24  - env: WP_TRAVISCI=test:e2e
     25  - env: WP_TRAVISCI=travis:phpcs
     26  - env: WP_TRAVISCI=travis:js
     27  - env: LOCAL_PHP=7.3-fpm WP_TRAVISCI=test:php
     28  - php: 7.3
     29    dist: trusty
     30    env: WP_TRAVIS_OBJECT_CACHE=true WP_TRAVISCI=travis:phpunit
     31    services: memcached
     32  - env: LOCAL_PHP=7.2-fpm WP_TRAVISCI=test:php
     33  - env: LOCAL_PHP=7.1-fpm WP_TRAVISCI=test:php
     34  - env: LOCAL_PHP=7.0-fpm WP_TEST_REPORTER=true WP_TRAVISCI=test:php
     35  - env: LOCAL_PHP=5.6-fpm WP_TRAVISCI=test:php
    2136  - php: 7.4snapshot
    22   - php: 7.3
    23   - php: 7.3
    24     env: WP_TRAVIS_OBJECT_CACHE=true
    25     services: memcached
    26   - php: 7.2
    27   - php: 7.1
    28   - php: 7.0
    29     env: WP_TEST_REPORTER=true
    30   - php: 5.6
     37    dist: trusty
     38    env: WP_TRAVISCI=travis:phpunit
    3139  - php: nightly
     40    dist: trusty
     41    env: WP_TRAVISCI=travis:phpunit
    3242  allow_failures:
    3343  - php: 7.4snapshot
    3444  - php: nightly
    3545  fast_finish: true
     46
    3647before_install:
    3748- |
     
    4556  fi
    4657- |
     58  if [[ "$WP_TRAVISCI" == "test:php" ]]; then
     59      cp wp-tests-config-sample.php wp-tests-config.php
     60      sed -i "s/youremptytestdbnamehere/wordpress_develop_tests/" wp-tests-config.php
     61      sed -i "s/yourusernamehere/root/" wp-tests-config.php
     62      sed -i "s/yourpasswordhere/password/" wp-tests-config.php
     63      sed -i "s/localhost/mysql/" wp-tests-config.php
     64      travis_retry svn checkout https://plugins.svn.wordpress.org/wordpress-importer/tags/0.6.3/ tests/phpunit/data/plugins/wordpress-importer
     65  fi
     66- |
     67  sudo rm /usr/local/bin/docker-compose
     68  curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > docker-compose
     69  chmod +x docker-compose
     70  sudo mv docker-compose /usr/local/bin
     71- |
    4772  if [[ "$WP_TRAVIS_OBJECT_CACHE" == "true" ]]; then
    4873    cp tests/phpunit/includes/object-cache.php src/wp-content/object-cache.php
    4974    echo "extension = memcached.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
    5075  fi
     76
    5177before_script:
    5278- |
     
    5884  fi
    5985- |
    60   # Export Composer's global bin dir to PATH, but not on PHP 5.2:
     86  # Export Composer's global bin dir to PATH:
    6187  composer config --list --global
    6288  export PATH=`composer config --list --global | grep '\[home\]' | { read a; echo "${a#* }/vendor/bin:$PATH"; }`
    6389- |
    64   # Install the specified version of PHPUnit depending on the PHP version:
     90  # Install PHPUnit for the tests that don't run in Docker.
    6591  if [[ "$WP_TRAVISCI" == "travis:phpunit" ]]; then
    66     case "$TRAVIS_PHP_VERSION" in
    67       7.4snapshot|7.3|7.2|7.1|nightly)
    68         echo "Using PHPUnit 7.x"
    69         travis_retry composer global require "phpunit/phpunit:^7"
    70         ;;
    71       7.0)
    72         echo "Using PHPUnit 6.x"
    73         travis_retry composer global require "phpunit/phpunit:^6"
    74         ;;
    75       5.6)
    76         echo "Using PHPUnit 4.x"
    77         travis_retry composer global require "phpunit/phpunit:^4"
    78         ;;
    79       *)
    80         echo "No PHPUnit version handling for PHP version $TRAVIS_PHP_VERSION"
    81         exit 1
    82         ;;
    83     esac
     92    echo "Using PHPUnit 7.x"
     93    travis_retry composer global require "phpunit/phpunit:^7"
    8494  fi
    8595- |
     
    94104- npm install
    95105- npm prune
     106- |
     107  if [[ "$WP_TRAVISCI" == "test:e2e" ]] || [[ "$WP_TRAVISCI" == "test:php" ]]; then
     108    npm run env:start
     109    npm run build
     110  fi
     111- |
     112  if [[ "$WP_TRAVISCI" == "test:e2e" ]]; then
     113    npm run env:install
     114  fi
    96115- mysql --version
    97116- phpenv versions
     
    106125- svn --version
    107126- locale -a
     127
    108128script:
    109 - |
    110   if [[ "$WP_TRAVISCI" == "e2e" ]]; then
    111     npm run env:start
    112     npm run env:reset-site
    113     npm run test:e2e
    114   else
    115     npm run grunt $WP_TRAVISCI
    116   fi
     129  - |
     130    if [[ "$WP_TRAVISCI" == "test:e2e" ]]; then
     131      npm run test:e2e
     132    elif [[ "$WP_TRAVISCI" == "test:php" ]]; then
     133      npm run test:php -- -- -- --verbose -c phpunit.xml.dist
     134      npm run test:php -- -- -- --verbose -c phpunit.xml.dist --group ajax
     135      npm run test:php -- -- -- --verbose -c tests/phpunit/multisite.xml
     136      npm run test:php -- -- -- --verbose -c tests/phpunit/multisite.xml --group ms-files
     137      npm run test:php -- -- -- --verbose -c phpunit.xml.dist --group external-http
     138      npm run test:php -- -- -- --verbose -c phpunit.xml.dist --group restapi-jsclient
     139    else
     140      npm run grunt $WP_TRAVISCI
     141    fi
     142
    117143after_script:
    118144- |
     
    123149    php test-runner/report.php
    124150  fi
     151
    125152notifications:
    126153  slack:
  • trunk/package-lock.json

    r45570 r45745  
    10851085            "integrity": "sha512-zuJMxn5Qnk7CKl+zrVXDqXs0F+p4tshO6B4s8VenJj34EEVuV4iZIbkGiEFJUbn29z9Mcn6k8yfj9qSCNDcPPQ=="
    10861086        },
     1087        "@hapi/address": {
     1088            "version": "2.0.0",
     1089            "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.0.0.tgz",
     1090            "integrity": "sha512-mV6T0IYqb0xL1UALPFplXYQmR0twnXG0M6jUswpquqT2sD12BOiCiLy3EvMp/Fy7s3DZElC4/aPjEjo2jeZpvw==",
     1091            "dev": true
     1092        },
     1093        "@hapi/hoek": {
     1094            "version": "6.2.4",
     1095            "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-6.2.4.tgz",
     1096            "integrity": "sha512-HOJ20Kc93DkDVvjwHyHawPwPkX44sIrbXazAUDiUXaY2R9JwQGo2PhFfnQtdrsIe4igjG2fPgMra7NYw7qhy0A==",
     1097            "dev": true
     1098        },
     1099        "@hapi/joi": {
     1100            "version": "15.1.0",
     1101            "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.0.tgz",
     1102            "integrity": "sha512-n6kaRQO8S+kepUTbXL9O/UOL788Odqs38/VOfoCrATDtTvyfiO3fgjlSRaNkHabpTLgM7qru9ifqXlXbXk8SeQ==",
     1103            "dev": true,
     1104            "requires": {
     1105                "@hapi/address": "2.x.x",
     1106                "@hapi/hoek": "6.x.x",
     1107                "@hapi/marker": "1.x.x",
     1108                "@hapi/topo": "3.x.x"
     1109            }
     1110        },
     1111        "@hapi/marker": {
     1112            "version": "1.0.0",
     1113            "resolved": "https://registry.npmjs.org/@hapi/marker/-/marker-1.0.0.tgz",
     1114            "integrity": "sha512-JOfdekTXnJexfE8PyhZFyHvHjt81rBFSAbTIRAhF2vv/2Y1JzoKsGqxH/GpZJoF7aEfYok8JVcAHmSz1gkBieA==",
     1115            "dev": true
     1116        },
     1117        "@hapi/topo": {
     1118            "version": "3.1.2",
     1119            "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.2.tgz",
     1120            "integrity": "sha512-r+aumOqJ5QbD6aLPJWqVjMAPsx5pZKz+F5yPqXZ/WWG9JTtHbQqlzrJoknJ0iJxLj9vlXtmpSdjlkszseeG8OA==",
     1121            "dev": true,
     1122            "requires": {
     1123                "@hapi/hoek": "8.x.x"
     1124            },
     1125            "dependencies": {
     1126                "@hapi/hoek": {
     1127                    "version": "8.0.2",
     1128                    "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.0.2.tgz",
     1129                    "integrity": "sha512-O6o6mrV4P65vVccxymuruucb+GhP2zl9NLCG8OdoFRS8BEGw3vwpPp20wpAtpbQQxz1CEUtmxJGgWhjq1XA3qw==",
     1130                    "dev": true
     1131                }
     1132            }
     1133        },
    10871134        "@jest/console": {
    10881135            "version": "24.7.1",
     
    36733720            }
    36743721        },
     3722        "babel-helper-bindify-decorators": {
     3723            "version": "6.24.1",
     3724            "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz",
     3725            "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=",
     3726            "dev": true,
     3727            "requires": {
     3728                "babel-runtime": "^6.22.0",
     3729                "babel-traverse": "^6.24.1",
     3730                "babel-types": "^6.24.1"
     3731            }
     3732        },
     3733        "babel-helper-builder-binary-assignment-operator-visitor": {
     3734            "version": "6.24.1",
     3735            "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz",
     3736            "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=",
     3737            "dev": true,
     3738            "requires": {
     3739                "babel-helper-explode-assignable-expression": "^6.24.1",
     3740                "babel-runtime": "^6.22.0",
     3741                "babel-types": "^6.24.1"
     3742            }
     3743        },
    36753744        "babel-helper-call-delegate": {
    36763745            "version": "6.24.1",
     
    36933762                "babel-types": "^6.26.0",
    36943763                "lodash": "^4.17.4"
     3764            }
     3765        },
     3766        "babel-helper-explode-assignable-expression": {
     3767            "version": "6.24.1",
     3768            "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz",
     3769            "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=",
     3770            "dev": true,
     3771            "requires": {
     3772                "babel-runtime": "^6.22.0",
     3773                "babel-traverse": "^6.24.1",
     3774                "babel-types": "^6.24.1"
     3775            }
     3776        },
     3777        "babel-helper-explode-class": {
     3778            "version": "6.24.1",
     3779            "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz",
     3780            "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=",
     3781            "dev": true,
     3782            "requires": {
     3783                "babel-helper-bindify-decorators": "^6.24.1",
     3784                "babel-runtime": "^6.22.0",
     3785                "babel-traverse": "^6.24.1",
     3786                "babel-types": "^6.24.1"
    36953787            }
    36963788        },
     
    37423834                "babel-types": "^6.26.0",
    37433835                "lodash": "^4.17.4"
     3836            }
     3837        },
     3838        "babel-helper-remap-async-to-generator": {
     3839            "version": "6.24.1",
     3840            "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz",
     3841            "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=",
     3842            "dev": true,
     3843            "requires": {
     3844                "babel-helper-function-name": "^6.24.1",
     3845                "babel-runtime": "^6.22.0",
     3846                "babel-template": "^6.24.1",
     3847                "babel-traverse": "^6.24.1",
     3848                "babel-types": "^6.24.1"
    37443849            }
    37453850        },
     
    39114016            }
    39124017        },
     4018        "babel-plugin-syntax-async-functions": {
     4019            "version": "6.13.0",
     4020            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
     4021            "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=",
     4022            "dev": true
     4023        },
     4024        "babel-plugin-syntax-async-generators": {
     4025            "version": "6.13.0",
     4026            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz",
     4027            "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=",
     4028            "dev": true
     4029        },
     4030        "babel-plugin-syntax-class-constructor-call": {
     4031            "version": "6.18.0",
     4032            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz",
     4033            "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=",
     4034            "dev": true
     4035        },
     4036        "babel-plugin-syntax-class-properties": {
     4037            "version": "6.13.0",
     4038            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz",
     4039            "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=",
     4040            "dev": true
     4041        },
     4042        "babel-plugin-syntax-decorators": {
     4043            "version": "6.13.0",
     4044            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz",
     4045            "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=",
     4046            "dev": true
     4047        },
     4048        "babel-plugin-syntax-do-expressions": {
     4049            "version": "6.13.0",
     4050            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz",
     4051            "integrity": "sha1-V0d1YTmqJtOQ0JQQsDdEugfkeW0=",
     4052            "dev": true
     4053        },
     4054        "babel-plugin-syntax-dynamic-import": {
     4055            "version": "6.18.0",
     4056            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz",
     4057            "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=",
     4058            "dev": true
     4059        },
     4060        "babel-plugin-syntax-exponentiation-operator": {
     4061            "version": "6.13.0",
     4062            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz",
     4063            "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=",
     4064            "dev": true
     4065        },
     4066        "babel-plugin-syntax-export-extensions": {
     4067            "version": "6.13.0",
     4068            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz",
     4069            "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=",
     4070            "dev": true
     4071        },
     4072        "babel-plugin-syntax-function-bind": {
     4073            "version": "6.13.0",
     4074            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz",
     4075            "integrity": "sha1-SMSV8Xe98xqYHnMvVa3AvdJgH0Y=",
     4076            "dev": true
     4077        },
     4078        "babel-plugin-syntax-object-rest-spread": {
     4079            "version": "6.13.0",
     4080            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
     4081            "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=",
     4082            "dev": true
     4083        },
     4084        "babel-plugin-syntax-trailing-function-commas": {
     4085            "version": "6.22.0",
     4086            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz",
     4087            "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=",
     4088            "dev": true
     4089        },
     4090        "babel-plugin-transform-async-generator-functions": {
     4091            "version": "6.24.1",
     4092            "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz",
     4093            "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=",
     4094            "dev": true,
     4095            "requires": {
     4096                "babel-helper-remap-async-to-generator": "^6.24.1",
     4097                "babel-plugin-syntax-async-generators": "^6.5.0",
     4098                "babel-runtime": "^6.22.0"
     4099            }
     4100        },
     4101        "babel-plugin-transform-async-to-generator": {
     4102            "version": "6.24.1",
     4103            "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz",
     4104            "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=",
     4105            "dev": true,
     4106            "requires": {
     4107                "babel-helper-remap-async-to-generator": "^6.24.1",
     4108                "babel-plugin-syntax-async-functions": "^6.8.0",
     4109                "babel-runtime": "^6.22.0"
     4110            }
     4111        },
     4112        "babel-plugin-transform-class-constructor-call": {
     4113            "version": "6.24.1",
     4114            "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz",
     4115            "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=",
     4116            "dev": true,
     4117            "requires": {
     4118                "babel-plugin-syntax-class-constructor-call": "^6.18.0",
     4119                "babel-runtime": "^6.22.0",
     4120                "babel-template": "^6.24.1"
     4121            }
     4122        },
     4123        "babel-plugin-transform-class-properties": {
     4124            "version": "6.24.1",
     4125            "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz",
     4126            "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=",
     4127            "dev": true,
     4128            "requires": {
     4129                "babel-helper-function-name": "^6.24.1",
     4130                "babel-plugin-syntax-class-properties": "^6.8.0",
     4131                "babel-runtime": "^6.22.0",
     4132                "babel-template": "^6.24.1"
     4133            }
     4134        },
     4135        "babel-plugin-transform-decorators": {
     4136            "version": "6.24.1",
     4137            "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz",
     4138            "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=",
     4139            "dev": true,
     4140            "requires": {
     4141                "babel-helper-explode-class": "^6.24.1",
     4142                "babel-plugin-syntax-decorators": "^6.13.0",
     4143                "babel-runtime": "^6.22.0",
     4144                "babel-template": "^6.24.1",
     4145                "babel-types": "^6.24.1"
     4146            }
     4147        },
     4148        "babel-plugin-transform-do-expressions": {
     4149            "version": "6.22.0",
     4150            "resolved": "https://registry.npmjs.org/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz",
     4151            "integrity": "sha1-KMyvkoEtlJws0SgfaQyP3EaK6bs=",
     4152            "dev": true,
     4153            "requires": {
     4154                "babel-plugin-syntax-do-expressions": "^6.8.0",
     4155                "babel-runtime": "^6.22.0"
     4156            }
     4157        },
    39134158        "babel-plugin-transform-es2015-arrow-functions": {
    39144159            "version": "6.22.0",
     
    41214366                "babel-runtime": "^6.22.0",
    41224367                "regexpu-core": "^2.0.0"
     4368            }
     4369        },
     4370        "babel-plugin-transform-exponentiation-operator": {
     4371            "version": "6.24.1",
     4372            "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz",
     4373            "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=",
     4374            "dev": true,
     4375            "requires": {
     4376                "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1",
     4377                "babel-plugin-syntax-exponentiation-operator": "^6.8.0",
     4378                "babel-runtime": "^6.22.0"
     4379            }
     4380        },
     4381        "babel-plugin-transform-export-extensions": {
     4382            "version": "6.22.0",
     4383            "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz",
     4384            "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=",
     4385            "dev": true,
     4386            "requires": {
     4387                "babel-plugin-syntax-export-extensions": "^6.8.0",
     4388                "babel-runtime": "^6.22.0"
     4389            }
     4390        },
     4391        "babel-plugin-transform-function-bind": {
     4392            "version": "6.22.0",
     4393            "resolved": "https://registry.npmjs.org/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz",
     4394            "integrity": "sha1-xvuOlqwpajELjPjqQBRiQH3fapc=",
     4395            "dev": true,
     4396            "requires": {
     4397                "babel-plugin-syntax-function-bind": "^6.8.0",
     4398                "babel-runtime": "^6.22.0"
     4399            }
     4400        },
     4401        "babel-plugin-transform-object-rest-spread": {
     4402            "version": "6.26.0",
     4403            "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz",
     4404            "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=",
     4405            "dev": true,
     4406            "requires": {
     4407                "babel-plugin-syntax-object-rest-spread": "^6.8.0",
     4408                "babel-runtime": "^6.26.0"
    41234409            }
    41244410        },
     
    41814467            }
    41824468        },
     4469        "babel-preset-stage-0": {
     4470            "version": "6.24.1",
     4471            "resolved": "https://registry.npmjs.org/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz",
     4472            "integrity": "sha1-VkLRUEL5E4TX5a+LyIsduVsDnmo=",
     4473            "dev": true,
     4474            "requires": {
     4475                "babel-plugin-transform-do-expressions": "^6.22.0",
     4476                "babel-plugin-transform-function-bind": "^6.22.0",
     4477                "babel-preset-stage-1": "^6.24.1"
     4478            }
     4479        },
     4480        "babel-preset-stage-1": {
     4481            "version": "6.24.1",
     4482            "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz",
     4483            "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=",
     4484            "dev": true,
     4485            "requires": {
     4486                "babel-plugin-transform-class-constructor-call": "^6.24.1",
     4487                "babel-plugin-transform-export-extensions": "^6.22.0",
     4488                "babel-preset-stage-2": "^6.24.1"
     4489            }
     4490        },
     4491        "babel-preset-stage-2": {
     4492            "version": "6.24.1",
     4493            "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz",
     4494            "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=",
     4495            "dev": true,
     4496            "requires": {
     4497                "babel-plugin-syntax-dynamic-import": "^6.18.0",
     4498                "babel-plugin-transform-class-properties": "^6.24.1",
     4499                "babel-plugin-transform-decorators": "^6.24.1",
     4500                "babel-preset-stage-3": "^6.24.1"
     4501            }
     4502        },
     4503        "babel-preset-stage-3": {
     4504            "version": "6.24.1",
     4505            "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz",
     4506            "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=",
     4507            "dev": true,
     4508            "requires": {
     4509                "babel-plugin-syntax-trailing-function-commas": "^6.22.0",
     4510                "babel-plugin-transform-async-generator-functions": "^6.24.1",
     4511                "babel-plugin-transform-async-to-generator": "^6.24.1",
     4512                "babel-plugin-transform-exponentiation-operator": "^6.24.1",
     4513                "babel-plugin-transform-object-rest-spread": "^6.22.0"
     4514            }
     4515        },
    41834516        "babel-register": {
    41844517            "version": "6.26.0",
     
    58386171            }
    58396172        },
     6173        "copyfiles": {
     6174            "version": "2.1.1",
     6175            "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.1.1.tgz",
     6176            "integrity": "sha512-y6DZHve80whydXzBal7r70TBgKMPKesVRR1Sn/raUu7Jh/i7iSLSyGvYaq0eMJ/3Y/CKghwzjY32q1WzEnpp3Q==",
     6177            "dev": true,
     6178            "requires": {
     6179                "glob": "^7.0.5",
     6180                "minimatch": "^3.0.3",
     6181                "mkdirp": "^0.5.1",
     6182                "noms": "0.0.0",
     6183                "through2": "^2.0.1",
     6184                "yargs": "^13.2.4"
     6185            },
     6186            "dependencies": {
     6187                "ansi-regex": {
     6188                    "version": "4.1.0",
     6189                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
     6190                    "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
     6191                    "dev": true
     6192                },
     6193                "ansi-styles": {
     6194                    "version": "3.2.1",
     6195                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
     6196                    "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
     6197                    "dev": true,
     6198                    "requires": {
     6199                        "color-convert": "^1.9.0"
     6200                    }
     6201                },
     6202                "camelcase": {
     6203                    "version": "5.3.1",
     6204                    "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
     6205                    "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
     6206                    "dev": true
     6207                },
     6208                "cliui": {
     6209                    "version": "5.0.0",
     6210                    "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
     6211                    "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
     6212                    "dev": true,
     6213                    "requires": {
     6214                        "string-width": "^3.1.0",
     6215                        "strip-ansi": "^5.2.0",
     6216                        "wrap-ansi": "^5.1.0"
     6217                    }
     6218                },
     6219                "find-up": {
     6220                    "version": "3.0.0",
     6221                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
     6222                    "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
     6223                    "dev": true,
     6224                    "requires": {
     6225                        "locate-path": "^3.0.0"
     6226                    }
     6227                },
     6228                "get-caller-file": {
     6229                    "version": "2.0.5",
     6230                    "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
     6231                    "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
     6232                    "dev": true
     6233                },
     6234                "locate-path": {
     6235                    "version": "3.0.0",
     6236                    "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
     6237                    "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
     6238                    "dev": true,
     6239                    "requires": {
     6240                        "p-locate": "^3.0.0",
     6241                        "path-exists": "^3.0.0"
     6242                    }
     6243                },
     6244                "p-limit": {
     6245                    "version": "2.2.0",
     6246                    "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
     6247                    "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
     6248                    "dev": true,
     6249                    "requires": {
     6250                        "p-try": "^2.0.0"
     6251                    }
     6252                },
     6253                "p-locate": {
     6254                    "version": "3.0.0",
     6255                    "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
     6256                    "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
     6257                    "dev": true,
     6258                    "requires": {
     6259                        "p-limit": "^2.0.0"
     6260                    }
     6261                },
     6262                "p-try": {
     6263                    "version": "2.2.0",
     6264                    "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
     6265                    "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
     6266                    "dev": true
     6267                },
     6268                "require-main-filename": {
     6269                    "version": "2.0.0",
     6270                    "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
     6271                    "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
     6272                    "dev": true
     6273                },
     6274                "string-width": {
     6275                    "version": "3.1.0",
     6276                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
     6277                    "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
     6278                    "dev": true,
     6279                    "requires": {
     6280                        "emoji-regex": "^7.0.1",
     6281                        "is-fullwidth-code-point": "^2.0.0",
     6282                        "strip-ansi": "^5.1.0"
     6283                    }
     6284                },
     6285                "strip-ansi": {
     6286                    "version": "5.2.0",
     6287                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
     6288                    "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
     6289                    "dev": true,
     6290                    "requires": {
     6291                        "ansi-regex": "^4.1.0"
     6292                    }
     6293                },
     6294                "wrap-ansi": {
     6295                    "version": "5.1.0",
     6296                    "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
     6297                    "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
     6298                    "dev": true,
     6299                    "requires": {
     6300                        "ansi-styles": "^3.2.0",
     6301                        "string-width": "^3.0.0",
     6302                        "strip-ansi": "^5.0.0"
     6303                    }
     6304                },
     6305                "y18n": {
     6306                    "version": "4.0.0",
     6307                    "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
     6308                    "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
     6309                    "dev": true
     6310                },
     6311                "yargs": {
     6312                    "version": "13.3.0",
     6313                    "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz",
     6314                    "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==",
     6315                    "dev": true,
     6316                    "requires": {
     6317                        "cliui": "^5.0.0",
     6318                        "find-up": "^3.0.0",
     6319                        "get-caller-file": "^2.0.1",
     6320                        "require-directory": "^2.1.1",
     6321                        "require-main-filename": "^2.0.0",
     6322                        "set-blocking": "^2.0.0",
     6323                        "string-width": "^3.0.0",
     6324                        "which-module": "^2.0.0",
     6325                        "y18n": "^4.0.0",
     6326                        "yargs-parser": "^13.1.1"
     6327                    }
     6328                },
     6329                "yargs-parser": {
     6330                    "version": "13.1.1",
     6331                    "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
     6332                    "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
     6333                    "dev": true,
     6334                    "requires": {
     6335                        "camelcase": "^5.0.0",
     6336                        "decamelize": "^1.2.0"
     6337                    }
     6338                }
     6339            }
     6340        },
    58406341        "core-js": {
    58416342            "version": "3.1.4",
     
    59516452            }
    59526453        },
     6454        "cross-env": {
     6455            "version": "5.2.0",
     6456            "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz",
     6457            "integrity": "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==",
     6458            "dev": true,
     6459            "requires": {
     6460                "cross-spawn": "^6.0.5",
     6461                "is-windows": "^1.0.0"
     6462            },
     6463            "dependencies": {
     6464                "cross-spawn": {
     6465                    "version": "6.0.5",
     6466                    "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
     6467                    "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
     6468                    "dev": true,
     6469                    "requires": {
     6470                        "nice-try": "^1.0.4",
     6471                        "path-key": "^2.0.1",
     6472                        "semver": "^5.5.0",
     6473                        "shebang-command": "^1.2.0",
     6474                        "which": "^1.2.9"
     6475                    }
     6476                }
     6477            }
     6478        },
    59536479        "cross-spawn": {
    59546480            "version": "5.1.0",
     
    59596485                "shebang-command": "^1.2.0",
    59606486                "which": "^1.2.9"
     6487            }
     6488        },
     6489        "cross-var": {
     6490            "version": "1.1.0",
     6491            "resolved": "https://registry.npmjs.org/cross-var/-/cross-var-1.1.0.tgz",
     6492            "integrity": "sha1-8PDUuyNdlRONGlOYQtKQ8A23HNY=",
     6493            "dev": true,
     6494            "requires": {
     6495                "babel-preset-es2015": "^6.18.0",
     6496                "babel-preset-stage-0": "^6.16.0",
     6497                "babel-register": "^6.18.0",
     6498                "cross-spawn": "^5.0.1",
     6499                "exit": "^0.1.2"
    59616500            }
    59626501        },
     
    70707609                "is-obj": "^1.0.0"
    70717610            }
     7611        },
     7612        "dotenv-cli": {
     7613            "version": "2.0.1",
     7614            "resolved": "https://registry.npmjs.org/dotenv-cli/-/dotenv-cli-2.0.1.tgz",
     7615            "integrity": "sha512-RnjvnE+r27ni9j93w1ddMs9mQgxWlRozSfby7M4xVDJ5/DgLOFFAP92JrmXHkpn8dXCy+OObRx+w5wx0Dc3yww==",
     7616            "dev": true,
     7617            "requires": {
     7618                "cross-spawn": "^4.0.0",
     7619                "dotenv": "^7.0.0",
     7620                "dotenv-expand": "^5.0.0",
     7621                "minimist": "^1.1.3"
     7622            },
     7623            "dependencies": {
     7624                "cross-spawn": {
     7625                    "version": "4.0.2",
     7626                    "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
     7627                    "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=",
     7628                    "dev": true,
     7629                    "requires": {
     7630                        "lru-cache": "^4.0.1",
     7631                        "which": "^1.2.9"
     7632                    }
     7633                },
     7634                "dotenv": {
     7635                    "version": "7.0.0",
     7636                    "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz",
     7637                    "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==",
     7638                    "dev": true
     7639                },
     7640                "minimist": {
     7641                    "version": "1.2.0",
     7642                    "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
     7643                    "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
     7644                    "dev": true
     7645                }
     7646            }
     7647        },
     7648        "dotenv-expand": {
     7649            "version": "5.1.0",
     7650            "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
     7651            "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==",
     7652            "dev": true
    70727653        },
    70737654        "download": {
     
    1111611697            }
    1111711698        },
    11118         "hoek": {
    11119             "version": "5.0.4",
    11120             "resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.4.tgz",
    11121             "integrity": "sha512-Alr4ZQgoMlnere5FZJsIyfIjORBqZll5POhDsF4q64dPuJR6rNxXdDxtHSQq8OXRurhmx+PWYEE8bXRROY8h0w==",
    11122             "dev": true
    11123         },
    1112411699        "hoist-non-react-statics": {
    1112511700            "version": "2.5.5",
     
    1226712842            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
    1226812843            "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
    12269         },
    12270         "isemail": {
    12271             "version": "3.2.0",
    12272             "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz",
    12273             "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==",
    12274             "dev": true,
    12275             "requires": {
    12276                 "punycode": "2.x.x"
    12277             },
    12278             "dependencies": {
    12279                 "punycode": {
    12280                     "version": "2.1.1",
    12281                     "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
    12282                     "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
    12283                     "dev": true
    12284                 }
    12285             }
    1228612844        },
    1228712845        "isexe": {
     
    1375514313                    }
    1375614314                }
    13757             }
    13758         },
    13759         "joi": {
    13760             "version": "13.7.0",
    13761             "resolved": "https://registry.npmjs.org/joi/-/joi-13.7.0.tgz",
    13762             "integrity": "sha512-xuY5VkHfeOYK3Hdi91ulocfuFopwgbSORmIwzcwHKESQhC7w1kD5jaVSPnqDxS2I8t3RZ9omCKAxNwXN5zG1/Q==",
    13763             "dev": true,
    13764             "requires": {
    13765                 "hoek": "5.x.x",
    13766                 "isemail": "3.x.x",
    13767                 "topo": "3.x.x"
    1376814315            }
    1376914316        },
     
    1559816145            "dev": true,
    1559916146            "optional": true
     16147        },
     16148        "noms": {
     16149            "version": "0.0.0",
     16150            "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz",
     16151            "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=",
     16152            "dev": true,
     16153            "requires": {
     16154                "inherits": "^2.0.1",
     16155                "readable-stream": "~1.0.31"
     16156            },
     16157            "dependencies": {
     16158                "isarray": {
     16159                    "version": "0.0.1",
     16160                    "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
     16161                    "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
     16162                    "dev": true
     16163                },
     16164                "readable-stream": {
     16165                    "version": "1.0.34",
     16166                    "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
     16167                    "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
     16168                    "dev": true,
     16169                    "requires": {
     16170                        "core-util-is": "~1.0.0",
     16171                        "inherits": "~2.0.1",
     16172                        "isarray": "0.0.1",
     16173                        "string_decoder": "~0.10.x"
     16174                    }
     16175                },
     16176                "string_decoder": {
     16177                    "version": "0.10.31",
     16178                    "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
     16179                    "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
     16180                    "dev": true
     16181                }
     16182            }
    1560016183        },
    1560116184        "nopt": {
     
    2052521108            "dev": true
    2052621109        },
    20527         "topo": {
    20528             "version": "3.0.3",
    20529             "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz",
    20530             "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==",
    20531             "dev": true,
    20532             "requires": {
    20533                 "hoek": "6.x.x"
    20534             },
    20535             "dependencies": {
    20536                 "hoek": {
    20537                     "version": "6.1.3",
    20538                     "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz",
    20539                     "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==",
    20540                     "dev": true
    20541                 }
    20542             }
    20543         },
    2054421110        "toposort": {
    2054521111            "version": "2.0.2",
     
    2133521901        },
    2133621902        "wait-on": {
    21337             "version": "3.2.0",
    21338             "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-3.2.0.tgz",
    21339             "integrity": "sha512-QUGNKlKLDyY6W/qHdxaRlXUAgLPe+3mLL/tRByHpRNcHs/c7dZXbu+OnJWGNux6tU1WFh/Z8aEwvbuzSAu79Zg==",
    21340             "dev": true,
    21341             "requires": {
    21342                 "core-js": "^2.5.7",
    21343                 "joi": "^13.0.0",
     21903            "version": "3.3.0",
     21904            "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-3.3.0.tgz",
     21905            "integrity": "sha512-97dEuUapx4+Y12aknWZn7D25kkjMk16PbWoYzpSdA8bYpVfS6hpl2a2pOWZ3c+Tyt3/i4/pglyZctG3J4V1hWQ==",
     21906            "dev": true,
     21907            "requires": {
     21908                "@hapi/joi": "^15.0.3",
     21909                "core-js": "^2.6.5",
    2134421910                "minimist": "^1.2.0",
    2134521911                "request": "^2.88.0",
  • trunk/package.json

    r45570 r45745  
    2323        "check-node-version": "3.2.0",
    2424        "copy-webpack-plugin": "^4.6.0",
     25        "copyfiles": "2.1.1",
    2526        "core-js": "3.1.4",
     27        "cross-env": "5.2.0",
     28        "cross-var": "1.1.0",
    2629        "cssnano": "4.1.8",
     30        "dotenv-cli": "2.0.1",
    2731        "grunt": "~1.0.3",
    2832        "grunt-banner": "^0.6.0",
     
    5458        "uglify-js": "^3.4.9",
    5559        "uglifyjs-webpack-plugin": "2.1.1",
     60        "wait-on": "3.3.0",
    5661        "webpack": "4.29.2",
    5762        "webpack-dev-server": "3.1.14",
     
    120125    "scripts": {
    121126        "build": "grunt build",
    122         "dev": "grunt build --dev",
     127        "build:dev": "grunt build --dev",
     128        "dev": "grunt watch --dev",
    123129        "test": "grunt test",
    124130        "watch": "grunt watch",
    125131        "grunt": "grunt",
    126         "env:start": "./tools/local-env/start.sh",
    127         "env:reset-site": "./tools/local-env/install-wordpress.sh --reset-site",
    128         "test:e2e": "wp-scripts test-e2e --config tests/e2e/jest.config.js"
     132        "env:start": "dotenv npm run env:__start-next",
     133        "env:__start-next": "docker-compose -f ./tools/local-env/docker-compose.yml up -d",
     134        "env:stop": "dotenv npm run env:__stop-next",
     135        "env:clean": "dotenv npm run env:__stop-next -- -- -v --remove-orphans",
     136        "env:reset": "dotenv npm run env:__stop-next -- -- --rmi all -v --remove-orphans",
     137        "env:__stop-next": "docker-compose -f ./tools/local-env/docker-compose.yml -f ./tools/local-env/docker-compose.scripts.yml down",
     138        "env:install": "dotenv npm run env:__install-next",
     139        "env:__install-next": "npm run env:__install-config && npm run env:__install-config-define-wp_debug && npm run env:__install-config-define-wp_debug_log && npm run env:__install-config-define-wp_debug_display && npm run env:__install-config-define-script_debug && copyfiles -f src/wp-config.php . && npm run env:__reset-site && npm run env:__install-site",
     140        "env:__install-config": "cross-var npm run env:__cli-next config create -- --dbname=wordpress_develop --dbuser=root --dbpass=password --dbhost=mysql --path=/var/www/src --force",
     141        "env:__install-config-define-wp_debug": "cross-var npm run env:__cli-next config set WP_DEBUG $LOCAL_WP_DEBUG -- --raw",
     142        "env:__install-config-define-wp_debug_log": "cross-var npm run env:__cli-next config set WP_DEBUG_LOG $LOCAL_WP_DEBUG_LOG -- --raw",
     143        "env:__install-config-define-wp_debug_display": "cross-var npm run env:__cli-next config set WP_DEBUG_DISPLAY $LOCAL_WP_DEBUG_DISPLAY -- --raw",
     144        "env:__install-config-define-script_debug": "cross-var npm run env:__cli-next config set SCRIPT_DEBUG $LOCAL_SCRIPT_DEBUG -- --raw",
     145        "env:__install-site": "cross-var wait-on tcp:localhost:$LOCAL_PORT && cross-var npm run env:__cli-next core install -- --title=WPDEV --admin_user=admin --admin_password=password --admin_email=test@test.com --skip-email --url=http://localhost:$LOCAL_PORT --quiet",
     146        "env:__reset-site": "cross-var wait-on tcp:localhost:$LOCAL_PORT && npm run env:__cli-next db reset -- --yes --quiet",
     147        "env:cli": "dotenv npm run env:__cli-next",
     148        "env:__cli-next": "docker-compose -f ./tools/local-env/docker-compose.yml -f ./tools/local-env/docker-compose.scripts.yml run --rm cli",
     149        "env:logs": "docker-compose -f ./tools/local-env/docker-compose.yml -f ./tools/local-env/docker-compose.scripts.yml logs",
     150        "test:e2e": "dotenv npm run test:__e2e-next",
     151        "test:__e2e-next": "cross-var cross-env WP_BASE_URL=http://localhost:$LOCAL_PORT wp-scripts test-e2e --config tests/e2e/jest.config.js",
     152        "test:php": "dotenv npm run test:__php-next",
     153        "test:__php-next": "docker-compose -f ./tools/local-env/docker-compose.yml -f ./tools/local-env/docker-compose.scripts.yml run --rm phpunit phpunit"
    129154    }
    130155}
  • trunk/tools/local-env/docker-compose.yml

    r45570 r45745  
    1 version: '3.1'
     1version: '3.7'
    22
    33services:
    4   wordpress:
    5     image: wordpress
    6     restart: always
     4
     5  ##
     6  # The web server container.
     7  ##
     8  wordpress-develop:
     9    image: nginx:alpine
     10
     11    networks:
     12      - wpdevnet
     13
    714    ports:
    8       - 8889:80
     15      - ${LOCAL_PORT-8889}:80
     16
    917    environment:
    10       WORDPRESS_DB_HOST: mysql
    11       WORDPRESS_DB_PASSWORD: example
    12       ABSPATH: /usr/src/wordpress/
    13       WORDPRESS_DEBUG: 1
    14       WORDPRESS_CONFIG_EXTRA: |
    15         define( 'SCRIPT_DEBUG', true );
     18      LOCAL_DIR: ${LOCAL_DIR-src}
     19
    1620    volumes:
    17       - wordpress_data:/var/www/html
    18       - ../../build/:/var/www/html/
     21      - ./default.template:/etc/nginx/conf.d/default.template
     22      - ../../:/var/www
     23
     24    # Load our config file, substituning environment variables into the config.
     25    command: /bin/sh -c "envsubst '$$LOCAL_DIR' < /etc/nginx/conf.d/default.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"
     26
     27    depends_on:
     28      - php
     29
     30  ##
     31  # The PHP container.
     32  ##
     33  php:
     34    image: wordpressdevelop/php:${LOCAL_PHP-latest}
     35
     36    networks:
     37      - wpdevnet
     38
     39    environment:
     40      LOCAL_PHP_XDEBUG: ${LOCAL_PHP_XDEBUG-false}
     41
     42    volumes:
     43      - ./php-config.ini:/usr/local/etc/php/conf.d/php-config.ini
     44      - ../../:/var/www
     45
    1946    depends_on:
    2047      - mysql
    2148
    22   cli:
    23     image: wordpress:cli
    24     restart: always
    25     user: xfs
     49  ##
     50  # The MySQL container.
     51  ##
     52  mysql:
     53    image: mysql:${LOCAL_MYSQL-latest}
     54
     55    networks:
     56      - wpdevnet
     57
     58    environment:
     59      MYSQL_ROOT_PASSWORD: password
     60
    2661    volumes:
    27       - wordpress_data:/var/www/html
    28       - ../../build/:/var/www/html/
    29     depends_on:
    30       - mysql
    31       - wordpress
     62      - ./mysql-init.sql:/docker-entrypoint-initdb.d/mysql-init.sql
     63      - mysql:/var/lib/mysql
    3264
    33   mysql:
    34     image: mysql:5.7
    35     restart: always
    36     environment:
    37       MYSQL_ROOT_PASSWORD: example
    38       MYSQL_DATABASE: wordpress_test
     65    # For compatibility with PHP versions that don't support the caching_sha2_password auth plugin used in MySQL 8.0.
     66    command: --default-authentication-plugin=mysql_native_password
    3967
    4068volumes:
    41   wordpress_data:
     69  # So that sites aren't wiped every time containers are restarted, MySQL uses a persistent volume.
     70  mysql: {}
     71
     72networks:
     73  # Creating our own network allows us to connect between containers using their service name.
     74  wpdevnet:
     75    driver: bridge
Note: See TracChangeset for help on using the changeset viewer.