# Tailwind v2 and Sage 9

**URL:** https://discourse.roots.io/t/tailwind-v2-and-sage-9/19598
**Category:** sage
**Tags:** webpack
**Created:** 2020-11-20T20:13:45Z
**Posts:** 48

## Post 1 by @christianmagill — 2020-11-20T20:13:45Z

Has anyone gotten Tailwind v2 working with Sage 9?

---

## Post 2 by @maroluke — 2020-11-21T10:51:44Z

I am on it right now, unfortunately without success.  
Read [here](https://discourse.roots.io/t/error-cant-resolve-images-sage-9-0-10/19602) why.  
I’ll notify you when i’m resolving this issue.

---

## Post 3 by @joshb — 2020-11-29T00:42:09Z

I also would love to get Tailwind 2.0 running with Sage 9.

After upgrading to 2.0 via:

`npm install tailwindcss@latest postcss@latest autoprefixer@latest`

and using Node 12.  
yarn && yarn build errors:

```
ERROR Failed to compile with 2 errors 5:28:39 PM

 error in ./resources/assets/styles/main.scss

Module build failed: ModuleBuildError: Module build failed: ValidationError: Invalid options object. PostCSS Loader has been initialized using an options object that does not match the API schema.
 - options has an unknown property 'plugins'. These properties are valid:
   object { postcssOptions?, execute?, sourceMap? }
    at validate (/Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/schema-utils/dist/validate.js:104:11)
    at Object.loader (/Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/postcss-loader/dist/index.js:43:29)
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/webpack/lib/NormalModule.js:195:19
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/loader-runner/lib/LoaderRunner.js:367:11
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/loader-runner/lib/LoaderRunner.js:233:18

 @ multi ./scripts/main.js ./styles/main.scss

 error in ./resources/assets/styles/main.scss

Module build failed: ModuleBuildError: Module build failed: ValidationError: Invalid options object. PostCSS Loader has been initialized using an options object that does not match the API schema.
 - options has an unknown property 'plugins'. These properties are valid:
   object { postcssOptions?, execute?, sourceMap? }
    at validate (/Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/schema-utils/dist/validate.js:104:11)
    at Object.loader (/Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/postcss-loader/dist/index.js:43:29)
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/webpack/lib/NormalModule.js:195:19
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/loader-runner/lib/LoaderRunner.js:367:11
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/loader-runner/lib/LoaderRunner.js:233:18
```

---

## Post 4 by @davids — 2020-11-29T22:48:59Z

This feels a little like hijacking because I haven’t tried yet with Sage 9, but if it’s any help I managed to get it working on Sage 10 (which btw i’ve been using for a while in production sites with zero issues) by upgrading Laravel Mix to 6.0.0-beta.14

---

## Post 5 by @christianmagill — 2020-11-29T23:02:47Z

No worries, I’ve been thinking of jumping into Sage 10 too. I’m just warry with little documentation. How was the learning experience for you?

---

## Post 6 by @joshb — 2020-11-29T23:33:58Z

Hmm, good to know. I am not quite ready to get on Sage 10.  
Any suggestions how what may work with Sage 9?

---

## Post 7 by @davids — 2020-11-29T23:47:45Z

@christianmagill It has been great! I wouldn’t consider myself a PHP expert and had no previous experience with laravel / blade templating, but it feels like a great and stable framework for expanding my knowledge of the language, much like when I first adopted Sage as my to-go theme. Of course, the lack of documentation sometimes has lead me to hours of browsing github issues and trial/error, but I count those as growing pains :stuck_out_tongue: (Also, I wouldn’t dare to venture yet on a Sage 9 \> 10 migration).

The setup process is fairly straightforward and you have a functional theme from the beginning with `composer create-project roots/sage your-theme dev-10.0.0-dev`. There’s some tinkering if you want to use Tailwind and its built-in purge instead of Bootstrap and PurgeCSS which come out of the box, but nothing more than a couple of lines in a file (all these things I learned from github/this forum).

Some tools that have been very useful and helped me grasp the ins an outs of Sage 10 are [sage-directives](https://github.com/Log1x/sage-directives), [poet](https://github.com/Log1x/poet), and [acf-composer](https://github.com/Log1x/acf-composer) by @Log1x, and [this guide on View Composers](https://roots.io/working-with-composers-in-sage-10/) has helped me understand how to work with data in Sage.

Lastly, I think there’s a lot of us who are constantly looking for/to help on this forum while we wait for the official docs, so I would say go for it!

---

## Post 8 by @joshb — 2020-11-30T20:30:22Z

Whelp, now I even have a bigger problem.

My failures of getting Tailwind 2.0 installed with Sage 9 now result in all these warnings when attempting to simply install Sage 9 with the built in Tailwind version.

```
warning browser-sync > localtunnel > debug@4.1.1: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
warning browsersync-webpack-plugin > bs-html-injector > request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
warning browsersync-webpack-plugin > bs-html-injector > jsdom > request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
warning browsersync-webpack-plugin > bs-html-injector > request > har-validator@5.1.5: this library is no longer supported
warning copy-globs-webpack-plugin > chokidar@1.7.0: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
warning copy-globs-webpack-plugin > chokidar > fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
warning copy-globs-webpack-plugin > chokidar > readdirp > micromatch > snapdragon > source-map-resolve > resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
warning copy-globs-webpack-plugin > chokidar > readdirp > micromatch > snapdragon > source-map-resolve > urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
warning css-loader > cssnano > autoprefixer > browserslist@1.7.7: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
warning css-loader > cssnano > postcss-merge-rules > browserslist@1.7.7: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
warning css-loader > cssnano > postcss-merge-rules > caniuse-api > browserslist@1.7.7: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
warning eslint > file-entry-cache > flat-cache > circular-json@0.3.3: CircularJSON is in maintenance only, flatted is its successor.
warning eslint-loader@4.0.2: This loader has been deprecated. Please use eslint-webpack-plugin
warning extract-text-webpack-plugin@3.0.2: Deprecated. Please use https://github.com/webpack-contrib/mini-css-extract-plugin
warning imagemin-webpack-plugin > babel-runtime > core-js@2.6.12: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
warning node-sass > request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
warning node-sass > node-gyp > request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
warning resolve-url-loader > rework > css > urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
warning webpack > watchpack > watchpack-chokidar2 > chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
warning webpack > watchpack > watchpack-chokidar2 > chokidar > fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
[3/5] 🚚 Fetching packages...
[4/5] 🔗 Linking dependencies...
warning " > autoprefixer@10.0.4" has unmet peer dependency "postcss@^8.1.0".
warning " > eslint-loader@4.0.2" has incorrect peer dependency "eslint@^6.0.0 || ^7.0.0".
warning " > eslint-loader@4.0.2" has incorrect peer dependency "webpack@^4.0.0 || ^5.0.0".
warning " > file-loader@6.2.0" has incorrect peer dependency "webpack@^4.0.0 || ^5.0.0".
warning " > postcss-loader@4.1.0" has incorrect peer dependency "webpack@^4.0.0 || ^5.0.0".
warning " > postcss-loader@4.1.0" has unmet peer dependency "postcss@^7.0.0 || ^8.0.1".
warning " > sass-loader@6.0.7" has incorrect peer dependency "node-sass@^4.0.0".
warning " > stylelint-webpack-plugin@0.10.5" has incorrect peer dependency "stylelint@^8.0.0".
warning " > stylelint-webpack-plugin@0.10.5" has incorrect peer dependency "webpack@^1.13.2 || ^2.7.0 || ^3.11.0 || ^4.4.0".
warning " > url-loader@4.1.1" has incorrect peer dependency "webpack@^4.0.0 || ^5.0.0".
[5/5] 🔨 Building fresh packages...
success Saved lockfile.
```

These warnings are then followed up by the same errors as I posted above (and below):

```
ERROR Failed to compile with 2 errors                                                                                                                                   

 error in ./resources/assets/styles/main.scss

Module build failed: ModuleBuildError: Module build failed: ValidationError: Invalid options object. PostCSS Loader has been initialized using an options object that does not match the API schema.
 - options has an unknown property 'plugins'. These properties are valid:
   object { postcssOptions?, execute?, sourceMap? }
    at validate (/Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/schema-utils/dist/validate.js:104:11)
    at Object.loader (/Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/postcss-loader/dist/index.js:43:29)
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/webpack/lib/NormalModule.js:195:19
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/loader-runner/lib/LoaderRunner.js:367:11
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/loader-runner/lib/LoaderRunner.js:233:18

 @ multi ./scripts/main.js ./styles/main.scss

 error in ./resources/assets/styles/main.scss

Module build failed: ModuleBuildError: Module build failed: ValidationError: Invalid options object. PostCSS Loader has been initialized using an options object that does not match the API schema.
 - options has an unknown property 'plugins'. These properties are valid:
   object { postcssOptions?, execute?, sourceMap? }
    at validate (/Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/schema-utils/dist/validate.js:104:11)
    at Object.loader (/Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/postcss-loader/dist/index.js:43:29)
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/webpack/lib/NormalModule.js:195:19
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/loader-runner/lib/LoaderRunner.js:367:11
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/loader-runner/lib/LoaderRunner.js:233:18
```

Wow, I really messed things up this time.

---

## Post 9 by @alwaysblank — 2020-11-30T21:06:45Z

Are you using NVM to manage your node versions?

---

## Post 10 by @joshb — 2020-11-30T21:09:08Z

Yes sir, I sure am.  
So i was using 12 when attempting to upgrade to Tailwind2.  
Going back, I’ve tried both v 10 and 8.

---

## Post 11 by @joshb — 2020-11-30T21:25:27Z

I completely removed my sage install, reinstalled sage 9.  
Using node v10 I receive the same errors above/below on yarn & yarn build:

```
ERROR Failed to compile with 2 errors 2:23:20 PM

 error in ./resources/assets/styles/main.scss

Module build failed: ModuleBuildError: Module build failed: ValidationError: Invalid options object. PostCSS Loader has been initialized using an options object that does not match the API schema.
 - options has an unknown property 'plugins'. These properties are valid:
   object { postcssOptions?, execute?, sourceMap? }
    at validate (/Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/schema-utils/dist/validate.js:104:11)
    at Object.loader (/Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/postcss-loader/dist/index.js:43:29)
    at runLoaders (/Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/webpack/lib/NormalModule.js:195:19)
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/loader-runner/lib/LoaderRunner.js:367:11
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/loader-runner/lib/LoaderRunner.js:233:18

 @ multi ./scripts/main.js ./styles/main.scss

 error in ./resources/assets/styles/main.scss

Module build failed: ModuleBuildError: Module build failed: ValidationError: Invalid options object. PostCSS Loader has been initialized using an options object that does not match the API schema.
 - options has an unknown property 'plugins'. These properties are valid:
   object { postcssOptions?, execute?, sourceMap? }
    at validate (/Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/schema-utils/dist/validate.js:104:11)
    at Object.loader (/Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/postcss-loader/dist/index.js:43:29)
    at runLoaders (/Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/webpack/lib/NormalModule.js:195:19)
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/loader-runner/lib/LoaderRunner.js:367:11
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/loader-runner/lib/LoaderRunner.js:233:18

                    Asset Size Chunks Chunk Names
          scripts/main.js 9.07 kB 0 [emitted] main
    scripts/customizer.js 3.25 kB 1 [emitted] customizer
      scripts/main.js.map 8.52 kB 0 [emitted] main
scripts/customizer.js.map 3.08 kB 1 [emitted] customizer
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
```

All previous projects I have are able to build still using the proper node version for each project. What could be causing this issue on a fresh install of sage 9?

---

## Post 12 by @joshb — 2020-11-30T22:09:46Z

Here’s what’s happening when attempting to update Bedrocks composer now:

```
[UnexpectedValueException]                                                                                           
  Unknown package has no name defined ([{"name":"composer\/installers","version":"v1.9.0","version_normalized":"1.9.0  
  .0","source":{"type":"git","url":"https:\/\/github.com\/composer\/installers.git","reference":"b93bcf0fa1fccb0b7d17  
  6b0967d969691cd74cca"},"dist":{"type":"zip","url":"https:\/\/api.github.com\/repos\/composer\/installers\/zipball\/  
  b93bcf0fa1fccb0b7d176b0967d969691cd74cca","reference":"b93bcf0fa1fccb0b7d176b0967d969691cd74cca","shasum":""},"requ  
  ire":{"composer-plugin-api":"^1.0 || ^2.0"},"replace":{"roundcube\/plugin-installer":"*","shama\/baton":"*"},"requi  
  re-dev":{"composer\/composer":"1.6.* || 2.0.*@dev","composer\/semver":"1.0.* || 2.0.*@dev","phpunit\/phpunit":"^4.8  
  .36","sebastian\/comparator":"^1.2.4","symfony\/process":"^2.3"},"time":"2020-04-07T06:57:05+00:00","type":"compose  
  r-plugin","extra":{"class":"Composer\\Installers\\Plugin","branch-alias":{"dev-master":"1.0-dev"}},"installation-so  
  urce":"dist","autoload":{"psr-4":{"Composer\\Installers\\":"src\/Composer\/Installers"}},"notification-url":"https:  
  \/\/packagist.org\/downloads\/","license":["MIT"],"authors":[{"name":"Kyle Robinson Young","email":"kyle@dontkry.co  
  m","homepage":"https:\/\/github.com\/shama"}],"description":"A multi-framework Composer library installer","homepag  
  e":"https:\/\/composer.github.io\/installers\/","keywords":["Craft","Dolibarr","Eliasis","Hurad","ImageCMS","Kanboa  
  rd","Lan Management System","MODX Evo","MantisBT","Mautic","Maya","OXID","Plentymarkets","Porto","RadPHP","SMF","Th  
  elia","Whmcs","WolfCMS","agl","aimeos","annotatecms","attogram","bitrix","cakephp","chef","cockpit","codeigniter","  
  concrete5","croogo","dokuwiki","drupal","eZ Platform","elgg","expressionengine","fuelphp","grav","installer","itop"  
  ,"joomla","known","kohana","laravel","lavalite","lithium","magento","majima","mako","mediawiki","modulework","modx"  
  ,"moodle","osclass","phpbb","piwik","ppi","puppet","pxcms","reindex","roundcube","shopware","silverstripe","sydes",  
  "sylius","symfony","typo3","wordpress","yawik","zend","zikula"],"install-path":".\/installers"},{"name":"oscarotero  
  \/env","version":"v2.1.0","version_normalized":"2.1.0.0","source":{"type":"git","url":"https:\/\/github.com\/oscaro  
  tero\/env.git","reference":"0da22cadc6924155fa9bbea2cdda2e84ab7cbdd3"},"dist":{"type":"zip","url":"https:\/\/api.gi  
  thub.com\/repos\/oscarotero\/env\/zipball\/0da22cadc6924155fa9bbea2cdda2e84ab7cbdd3","reference":"0da22cadc6924155f  
  a9bbea2cdda2e84ab7cbdd3","shasum":""},"require":{"ext-ctype":"*","php":">=7.1"},"require-dev":{"friendsofphp\/php-c  
  s-fixer":"^2.16","phpunit\/phpunit":"^7.0"},"time":"2020-06-11T10:59:27+00:00","type":"library","installation-sourc  
  e":"dist","autoload":{"psr-4":{"Env\\":"src\/"},"files":["src\/env_function.php"]},"notification-url":"https:\/\/pa  
  ckagist.org\/downloads\/","license":["MIT"],"authors":[{"name":"Oscar Otero","email":"oom@oscarotero.com","homepage  
  ":"http:\/\/oscarotero.com","role":"Developer"}],"description":"Simple library to consume environment variables","h  
  omepage":"https:\/\/github.com\/oscarotero\/env","keywords":["env"],"install-path":"..\/oscarotero\/env"},{"name":"  
  phpoption\/phpoption","version":"1.7.5","version_normalized":"1.7.5.0","source":{"type":"git","url":"https:\/\/gith  
  ub.com\/schmittjoh\/php-option.git","reference":"994ecccd8f3283ecf5ac33254543eb0ac946d525"},"dist":{"type":"zip","u  
  rl":"https:\/\/api.github.com\/repos\/schmittjoh\/php-option\/zipball\/994ecccd8f3283ecf5ac33254543eb0ac946d525","r  
  eference":"994ecccd8f3283ecf5ac33254543eb0ac946d525","shasum":""},"require":{"php":"^5.5.9 || ^7.0 || ^8.0"},"requi  
  re-dev":{"bamarni\/composer-bin-plugin":"^1.4.1","phpunit\/phpunit":"^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0 || ^8.0 |  
  | ^9.0"},"time":"2020-07-20T17:29:33+00:00","type":"library","extra":{"branch-alias":{"dev-master":"1.7-dev"}},"ins  
  tallation-source":"dist","autoload":{"psr-4":{"PhpOption\\":"src\/PhpOption\/"}},"notification-url":"https:\/\/pack  
  agist.org\/downloads\/","license":["Apache-2.0"],"authors":[{"name":"Johannes M. Schmitt","email":"schmittjoh@gmail  
  .com"},{"name":"Graham Campbell","email":"graham@alt-three.com"}],"description":"Option Type for PHP","keywords":["  
  language","option","php","type"],"install-path":"..\/phpoption\/phpoption"},{"name":"roave\/security-advisories","v  
  ersion":"dev-master","version_normalized":"dev-master","source":{"type":"git","url":"https:\/\/github.com\/Roave\/S  
  ecurityAdvisories.git","reference":"327370943772f9917bc2dc2aa4263db2d572a112"},"dist":{"type":"zip","url":"https:\/  
  \/api.github.com\/repos\/Roave\/SecurityAdvisories\/zipball\/327370943772f9917bc2dc2aa4263db2d572a112","reference":  
  "327370943772f9917bc2dc2aa4263db2d572a112","shasum":""},"conflict":{"3f\/pygmentize":"<1.2","adodb\/adodb-php":"<5.  
  20.12","alterphp\/easyadmin-extension-bundle":">=1.2,<1.2.11|>=1.3,<1.3.1","amphp\/artax":"<1.0.6|>=2,<2.0.6","amph  
  p\/http":"<1.0.1","amphp\/http-client":">=4,<4.4","api-platform\/core":">=2.2,<2.2.10|>=2.3,<2.3.6","asymmetricrypt  
  \/asymmetricrypt":">=0,<9.9.99","aws\/aws-sdk-php":">=3,<3.2.1","bagisto\/bagisto":"<0.1.5","barrelstrength\/sprout  
  -base-email":"<1.2.7","barrelstrength\/sprout-forms":"<3.9","baserproject\/basercms":">=4,<=4.3.6","bolt\/bolt":"<3  
  .7.1","brightlocal\/phpwhois":"<=4.2.5","buddypress\/buddypress":"<5.1.2","bugsnag\/bugsnag-laravel":">=2,<2.0.2","  
  cakephp\/cakephp":">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.5.18|>=3.6,<3.6.15|>=3  
  .7,<3.7.7","cart2quote\/module-quotation":">=4.1.6,<=4.4.5|>=5,<5.4.4","cartalyst\/sentry":"<=2.1.6","centreon\/cen  
  treon":"<18.10.8|>=19,<19.4.5","cesnet\/simplesamlphp-module-proxystatistics":"<3.1","codeigniter\/framework":"<=3.  
  0.6","composer\/composer":"<=1-alpha.11","contao-components\/mediaelement":">=2.14.2,<2.21.1","contao\/core":">=2,<  
  3.5.39","contao\/core-bundle":">=4,<4.4.52|>=4.5,<4.9.6|= 4.10.0","contao\/listing-bundle":">=4,<4.4.8","datadog\/d  
  d-trace":">=0.30,<0.30.2","david-garcia\/phpwhois":"<=4.3.1","derhansen\/sf_event_mgt":"<4.3.1|>=5,<5.1.1","doctrin  
  e\/annotations":">=1,<1.2.7","doctrine\/cache":">=1,<1.3.2|>=1.4,<1.4.2","doctrine\/common":">=2,<2.4.3|>=2.5,<2.5.  
  1","doctrine\/dbal":">=2,<2.0.8|>=2.1,<2.1.2","doctrine\/doctrine-bundle":"<1.5.2","doctrine\/doctrine-module":"<=0  
  .7.1","doctrine\/mongodb-odm":">=1,<1.0.2","doctrine\/mongodb-odm-bundle":">=2,<3.0.1","doctrine\/orm":">=2,<2.4.8|  
  >=2.5,<2.5.1","dolibarr\/dolibarr":"<11.0.4","dompdf\/dompdf":">=0.6,<0.6.2","drupal\/core":">=7,<7.73|>=8,<8.8.10|  
  >=8.9,<8.9.6|>=9,<9.0.6","drupal\/drupal":">=7,<7.73|>=8,<8.8.10|>=8.9,<8.9.6|>=9,<9.0.6","endroid\/qr-code-bundle"  
  :"<3.4.2","enshrined\/svg-sanitize":"<0.13.1","erusev\/parsedown":"<1.7.2","ezsystems\/demobundle":">=5.4,<5.4.6.1"  
  ,"ezsystems\/ezdemo-ls-extension":">=5.4,<5.4.2.1","ezsystems\/ezfind-ls":">=5.3,<5.3.6.1|>=5.4,<5.4.11.1|>=2017.12  
  ,<2017.12.0.1","ezsystems\/ezplatform":">=1.7,<1.7.9.1|>=1.13,<1.13.5.1|>=2.5,<2.5.4","ezsystems\/ezplatform-admin-  
  ui":">=1.3,<1.3.5|>=1.4,<1.4.6","ezsystems\/ezplatform-admin-ui-assets":">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1","ezsys  
  tems\/ezplatform-kernel":">=1,<1.0.2.1","ezsystems\/ezplatform-user":">=1,<1.0.1","ezsystems\/ezpublish-kernel":">=  
  5.3,<5.3.12.1|>=5.4,<5.4.14.2|>=6,<6.7.9.1|>=6.8,<6.13.6.3|>=7,<7.2.4.1|>=7.3,<7.3.2.1|>=7.5,<7.5.7.1","ezsystems\/  
  ezpublish-legacy":">=5.3,<5.3.12.6|>=5.4,<5.4.14.2|>=2011,<2017.12.7.3|>=2018.6,<2018.6.1.4|>=2018.9,<2018.9.1.3|>=  
  2019.3,<2019.3.5.1","ezsystems\/platform-ui-assets-bundle":">=4.2,<4.2.3","ezsystems\/repository-forms":">=2.3,<2.3  
  .2.1","ezyang\/htmlpurifier":"<4.1.1","firebase\/php-jwt":"<2","fooman\/tcpdf":"<6.2.22","fossar\/tcpdf-parser":"<6  
  .2.22","friendsofsymfony\/oauth2-php":"<1.3","friendsofsymfony\/rest-bundle":">=1.2,<1.2.2","friendsofsymfony\/user  
  -bundle":">=1.2,<1.3.5","friendsoftypo3\/mediace":">=7.6.2,<7.6.5","fuel\/core":"<1.8.1","getgrav\/grav":"<1.7-beta  
  .8","gos\/web-socket-bundle":"<1.10.4|>=2,<2.6.1|>=3,<3.3","gree\/jose":"<=2.2","gregwar\/rst":"<1.0.3","guzzlehttp  
  \/guzzle":">=4-rc.2,<4.2.4|>=5,<5.3.1|>=6,<6.2.1","illuminate\/auth":">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5  
  ,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10","illuminate\/cookie":">=4,<=4.  
  0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.  
  4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4","illum  
  inate\/database":">=4,<4.0.99|>=4.1,<4.1.29|>=5.5,<=5.5.44|>=6,<6.18.34|>=7,<7.23.2","illuminate\/encryption":">=4,  
  <=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5  
  .5,<5.5.40|>=5.6,<5.6.15","illuminate\/view":">=7,<7.1.2","ivankristianto\/phpwhois":"<=4.3","james-heinrich\/getid  
  3":"<1.9.9","joomla\/session":"<1.3.1","jsmitty12\/phpwhois":"<5.1","kazist\/phpwhois":"<=4.2.6","kitodo\/presentat  
  ion":"<3.1.2","kreait\/firebase-php":">=3.2,<3.8.1","la-haute-societe\/tcpdf":"<6.2.22","laravel\/framework":">=4,<  
  4.0.99|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=  
  5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.34|>=7,<7.23.2","lar  
  avel\/socialite":">=1,<1.0.99|>=2,<2.0.10","league\/commonmark":"<0.18.3","librenms\/librenms":"<1.53","livewire\/l  
  ivewire":">2.2.4,<2.2.6","magento\/community-edition":">=2,<2.2.10|>=2.3,<2.3.3","magento\/magento1ce":"<1.9.4.3","  
  magento\/magento1ee":">=1,<1.14.4.3","magento\/product-community-edition":">=2,<2.2.10|>=2.3,<2.3.2-p.2","marcwillm  
  ann\/turn":"<0.3.3","mediawiki\/core":">=1.31,<1.31.4|>=1.32,<1.32.4|>=1.33,<1.33.1","mittwald\/typo3_forum":"<1.2.  
  1","monolog\/monolog":">=1.8,<1.12","namshi\/jose":"<2.2","nette\/application":">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.  
  2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6","nette\/nette":">=2,<2.0.19|>=2.1,<2.1.13","nystudio107\/craft-seomati  
  c":"<3.3","nzo\/url-encryptor-bundle":">=4,<4.3.2|>=5,<5.0.1","october\/backend":">=1.0.319,<1.0.467","october\/cms  
  ":">=1.0.319,<1.0.466","october\/october":">=1.0.319,<1.0.466","october\/rain":">=1.0.319,<1.0.468","onelogin\/php-  
  saml":"<2.10.4","oneup\/uploader-bundle":"<1.9.3|>=2,<2.1.5","openid\/php-openid":"<2.3","openmage\/magento-lts":"<  
  19.4.6|>=20,<20.0.2","oro\/crm":">=1.7,<1.7.4","oro\/platform":">=1.7,<1.7.4","padraic\/humbug_get_contents":"<1.1.  
  2","pagarme\/pagarme-php":">=0,<3","paragonie\/random_compat":"<2","paypal\/merchant-sdk-php":"<3.12","pear\/archiv  
  e_tar":"<1.4.4","personnummer\/personnummer":"<3.0.2","phpfastcache\/phpfastcache":">=5,<5.0.13","phpmailer\/phpmai  
  ler":"<6.1.6","phpmussel\/phpmussel":">=1,<1.6","phpmyadmin\/phpmyadmin":"<4.9.2","phpoffice\/phpexcel":"<1.8.2","p  
  hpoffice\/phpspreadsheet":"<1.8","phpunit\/phpunit":">=4.8.19,<4.8.28|>=5.0.10,<5.6.3","phpwhois\/phpwhois":"<=4.2.  
  5","phpxmlrpc\/extras":"<0.6.1","pimcore\/pimcore":"<6.3","prestashop\/autoupgrade":">=4,<4.10.1","prestashop\/cont  
  actform":">1.0.1,<4.3","prestashop\/gamification":"<2.3.2","prestashop\/ps_facetedsearch":"<3.4.1","privatebin\/pri  
  vatebin":"<1.2.2|>=1.3,<1.3.2","propel\/propel":">=2-alpha.1,<=2-alpha.7","propel\/propel1":">=1,<=1.7.1","pterodac  
  tyl\/panel":"<0.7.19|>=1-rc.0,<=1-rc.6","pusher\/pusher-php-server":"<2.2.1","rainlab\/debugbar-plugin":"<3.1","rob  
  richards\/xmlseclibs":"<3.0.4","sabberworm\/php-css-parser":">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9  
  |>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1","sabre\/dav":">  
  =1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9","scheb\/two-factor-bundle":">=0,<3.26|>=4,<4.11","sensiolabs\/connect":"<4  
  .2.3","serluck\/phpwhois":"<=4.2.6","shopware\/core":"<=6.3.1","shopware\/platform":"<=6.3.1","shopware\/shopware":  
  "<5.3.7","silverstripe\/admin":">=1.0.3,<1.0.4|>=1.1,<1.1.1","silverstripe\/assets":">=1,<1.4.7|>=1.5,<1.5.2","silv  
  erstripe\/cms":"<4.3.6|>=4.4,<4.4.4","silverstripe\/comments":">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1","silverstripe\  
  /forum":"<=0.6.1|>=0.7,<=0.7.3","silverstripe\/framework":"<4.4.7|>=4.5,<4.5.4","silverstripe\/graphql":">=2,<2.0.5  
  |>=3,<3.1.2|>=3.2,<3.2.4","silverstripe\/registry":">=2.1,<2.1.2|>=2.2,<2.2.1","silverstripe\/restfulserver":">=1,<  
  1.0.9|>=2,<2.0.4","silverstripe\/subsites":">=2,<2.1.1","silverstripe\/taxonomy":">=1.3,<1.3.1|>=2,<2.0.1","silvers  
  tripe\/userforms":"<3","simple-updates\/phpwhois":"<=1","simplesamlphp\/saml2":"<1.10.6|>=2,<2.3.8|>=3,<3.1.4","sim  
  plesamlphp\/simplesamlphp":"<1.18.6","simplesamlphp\/simplesamlphp-module-infocard":"<1.0.1","simplito\/elliptic-ph  
  p":"<1.0.6","slim\/slim":"<2.6","smarty\/smarty":"<3.1.33","socalnick\/scn-social-auth":"<1.15.2","spoonity\/tcpdf"  
  :"<6.2.22","squizlabs\/php_codesniffer":">=1,<2.8.1|>=3,<3.0.1","ssddanbrown\/bookstack":"<0.29.2","stormpath\/sdk"  
  :">=0,<9.9.99","studio-42\/elfinder":"<2.1.49","sulu\/sulu":"<1.6.34|>=2,<2.0.10|>=2.1,<2.1.1","swiftmailer\/swiftm  
  ailer":">=4,<5.4.5","sylius\/admin-bundle":">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2","sylius\/grid":">=1,<1.1.19|>=1.  
  2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1","sylius\/grid-bundle":">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>  
  =1.4,<1.4.5|>=1.5,<1.5.1","sylius\/resource-bundle":"<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4","sylius\/syliu  
  s":"<1.3.16|>=1.4,<1.4.12|>=1.5,<1.5.9|>=1.6,<1.6.5","symbiote\/silverstripe-multivaluefield":">=3,<3.0.99","symbio  
  te\/silverstripe-versionedfiles":"<=2.0.3","symfony\/cache":">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8","symfony\/depe  
  ndency-injection":">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7","symfony\/error-ha  
  ndler":">=4.4,<4.4.4|>=5,<5.0.4","symfony\/form":">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.  
  20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1","symfony\/framework-bundle":">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,  
  <2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7","symfony\/http-foundation":">=2,<2.8.52|>=3,<3.4.35|>=4  
  ,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7","symfony\/http-kernel":">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4  
  .4.13|>=5,<5.1.5","symfony\/intl":">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13","symfony\/mime":">=4.3,<4  
  .3.8","symfony\/phpunit-bridge":">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7","symfony\/polyfill":">=1,<1.10  
  ","symfony\/polyfill-php55":">=1,<1.10","symfony\/proxy-manager-bridge":">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=  
  4,<4.1.12|>=4.2,<4.2.7","symfony\/routing":">=2,<2.0.19","symfony\/security":">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26  
  |>=4,<4.1.12|>=4.2,<4.2.7|>=4.4,<4.4.7|>=5,<5.0.7","symfony\/security-bundle":">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.1  
  7|>=3.4,<3.4.11|>=4,<4.0.11","symfony\/security-core":">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.37|>=  
  3,<3.3.17|>=3.4,<3.4.7|>=4,<4.0.7","symfony\/security-csrf":">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|  
  >=4,<4.0.11","symfony\/security-guard":">=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11","symfony\/security-htt  
  p":">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7","symfon  
  y\/serializer":">=2,<2.0.11","symfony\/symfony":">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.4.13|>=5,<5.1.5","sym  
  fony\/translation":">=2,<2.0.17","symfony\/validator":">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3","symfon  
  y\/var-exporter":">=4.2,<4.2.12|>=4.3,<4.3.8","symfony\/web-profiler-bundle":">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4  
  ","symfony\/yaml":">=2,<2.0.22|>=2.1,<2.1.7","t3g\/svg-sanitizer":"<1.0.3","tecnickcom\/tcpdf":"<6.2.22","thelia\/b  
  ackoffice-default-template":">=2.1,<2.1.2","thelia\/thelia":">=2.1-beta.1,<2.1.3","theonedemon\/phpwhois":"<=4.2.5"  
  ,"titon\/framework":">=0,<9.9.99","truckersmp\/phpwhois":"<=4.3.1","twig\/twig":"<1.38|>=2,<2.7","typo3\/cms":">=6.  
  2,<6.2.30|>=7,<7.6.32|>=8,<8.7.30|>=9,<9.5.20|>=10,<10.4.6","typo3\/cms-core":">=8,<8.7.30|>=9,<9.5.20|>=10,<10.4.6  
  ","typo3\/flow":">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.  
  5","typo3\/neos":">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4","typo3\/phar-stream-wrapper":">=1,<2.1.1|>=3,<3.1.1","typo  
  3fluid\/fluid":">=2,<2.0.5|>=2.1,<2.1.4|>=2.2,<2.2.1|>=2.3,<2.3.5|>=2.4,<2.4.1|>=2.5,<2.5.5|>=2.6,<2.6.1","ua-parse  
  r\/uap-php":"<3.8","usmanhalalit\/pixie":"<1.0.3|>=2,<2.0.2","verot\/class.upload.php":"<=1.0.3|>=2,<=2.0.4","walla  
  bag\/tcpdf":"<6.2.22","willdurand\/js-translation-bundle":"<2.1.1","yii2mod\/yii2-cms":"<1.9.2","yiisoft\/yii":">=1  
  .1.14,<1.1.15","yiisoft\/yii2":"<2.0.38","yiisoft\/yii2-bootstrap":"<2.0.4","yiisoft\/yii2-dev":"<2.0.15","yiisoft\  
  /yii2-elasticsearch":"<2.0.5","yiisoft\/yii2-gii":"<2.0.4","yiisoft\/yii2-jui":"<2.0.4","yiisoft\/yii2-redis":"<2.0  
  .8","yourls\/yourls":"<1.7.4","zendframework\/zend-cache":">=2.4,<2.4.8|>=2.5,<2.5.3","zendframework\/zend-captcha"  
  :">=2,<2.4.9|>=2.5,<2.5.2","zendframework\/zend-crypt":">=2,<2.4.9|>=2.5,<2.5.2","zendframework\/zend-db":">=2,<2.0  
  .99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5","zendframework\/zend-developer-tools":">=1.2.2,<1.2.3","zendframework  
  \/zend-diactoros":">=1,<1.8.4","zendframework\/zend-feed":">=1,<2.10.3","zendframework\/zend-form":">=2,<2.2.7|>=2.  
  3,<2.3.1","zendframework\/zend-http":">=1,<2.8.1","zendframework\/zend-json":">=2.1,<2.1.6|>=2.2,<2.2.6","zendframe  
  work\/zend-ldap":">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3","zendframework\/zend-mail":">=2,<2.4.11|>=2.  
  5,<2.7.2","zendframework\/zend-navigation":">=2,<2.2.7|>=2.3,<2.3.1","zendframework\/zend-session":">=2,<2.0.99|>=2  
  .1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4","zendframework\/zend-validator":">=2.3,<2.3.6","zendframework\/zend-view":">=  
  2,<2.2.7|>=2.3,<2.3.1","zendframework\/zend-xmlrpc":">=2.1,<2.1.6|>=2.2,<2.2.6","zendframework\/zendframework":"<2.  
  5.1","zendframework\/zendframework1":"<1.12.20","zendframework\/zendopenid":">=2,<2.0.2","zendframework\/zendxml":"  
  >=1,<1.0.1","zetacomponents\/mail":"<1.8.2","zf-commons\/zfc-user":"<1.2.2","zfcampus\/zf-apigility-doctrine":">=1,  
  <1.0.3","zfr\/zfr-oauth2-server-module":"<0.1.2"},"time":"2020-10-19T07:02:45+00:00","type":"metapackage","notifica  
  tion-url":"https:\/\/packagist.org\/downloads\/","license":["MIT"],"authors":[{"name":"Marco Pivetta","email":"ocra  
  mius@gmail.com","role":"maintainer"},{"name":"Ilya Tribusean","email":"slash3b@gmail.com","role":"maintainer"}],"de  
  scription":"Prevents installation of composer packages with known security vulnerabilities: no API, simply require   
  it","install-path":null},{"name":"roots\/bedrock-autoloader","version":"1.0.3","version_normalized":"1.0.3.0","sour  
  ce":{"type":"git","url":"https:\/\/github.com\/roots\/bedrock-autoloader.git","reference":"885f2a5c425d82dfd811ef4f  
  13ab8f5bcc89cd70"},"dist":{"type":"zip","url":"https:\/\/api.github.com\/repos\/roots\/bedrock-autoloader\/zipball\  
  /885f2a5c425d82dfd811ef4f13ab8f5bcc89cd70","reference":"885f2a5c425d82dfd811ef4f13ab8f5bcc89cd70","shasum":""},"req  
  uire":{"php":">=7.1"},"time":"2020-05-18T04:43:20+00:00","type":"library","installation-source":"dist","autoload":{  
  "psr-4":{"Roots\\Bedrock\\":"src\/"}},"notification-url":"https:\/\/packagist.org\/downloads\/","license":["MIT"],"  
  authors":[{"name":"Nick Fox","email":"nick@foxaii.com","homepage":"https:\/\/github.com\/foxaii"},{"name":"Scott Wa  
  lkinshaw","email":"scott.walkinshaw@gmail.com","homepage":"https:\/\/github.com\/swalkinshaw"},{"name":"Austin Pray  
  ","email":"austin@austinpray.com","homepage":"https:\/\/github.com\/austinpray"}],"description":"An autoloader that  
   enables standard plugins to be required just like must-use plugins","keywords":["autoloader","bedrock","mu-plugin"  
  ,"must-use","plugin","wordpress"],"install-path":"..\/roots\/bedrock-autoloader"},{"name":"roots\/wordpress","versi  
  on":"5.5.3","version_normalized":"5.5.3.0","source":{"type":"git","url":"https:\/\/github.com\/WordPress\/WordPress  
  .git","reference":"5.5.3"},"dist":{"type":"zip","url":"https:\/\/api.github.com\/repos\/WordPress\/WordPress\/zipba  
  ll\/5.5.3"},"require":{"php":">=5.3.2","roots\/wordpress-core-installer":">=1.0.0"},"time":"2020-10-30T20:40:02+00:  
  00","type":"wordpress-core","installation-source":"dist","notification-url":"https:\/\/packagist.org\/downloads\/",  
  "license":["GPL-2.0-or-later"],"authors":[{"name":"WordPress Community","homepage":"https:\/\/wordpress.org\/about\  
  /"}],"description":"WordPress is web software you can use to create a beautiful website or blog.","homepage":"https  
  :\/\/wordpress.org\/","keywords":["blog","cms","wordpress"],"install-path":"..\/..\/web\/wp"},{"name":"roots\/wordp  
  ress-core-installer","version":"1.100.0","version_normalized":"1.100.0.0","source":{"type":"git","url":"https:\/\/g  
  ithub.com\/roots\/wordpress-core-installer.git","reference":"73f8488e5178c5d54234b919f823a9095e2b1847"},"dist":{"ty  
  pe":"zip","url":"https:\/\/api.github.com\/repos\/roots\/wordpress-core-installer\/zipball\/73f8488e5178c5d54234b91  
  9f823a9095e2b1847","reference":"73f8488e5178c5d54234b919f823a9095e2b1847","shasum":""},"require":{"composer-plugin-  
  api":"^1.0 || ^2.0","php":">=5.6.0"},"conflict":{"composer\/installers":"<1.0.6"},"replace":{"johnpbloch\/wordpress  
  -core-installer":"*"},"require-dev":{"composer\/composer":"^1.0 || ^2.0","phpunit\/phpunit":">=5.7.27"},"time":"202  
  0-08-20T00:27:30+00:00","type":"composer-plugin","extra":{"class":"Roots\\Composer\\WordPressCorePlugin"},"installa  
  tion-source":"dist","autoload":{"psr-4":{"Roots\\Composer\\":"src\/"}},"notification-url":"https:\/\/packagist.org\  
  /downloads\/","license":["GPL-2.0-or-later"],"authors":[{"name":"John P. Bloch","email":"me@johnpbloch.com"},{"name  
  ":"Roots","email":"team@roots.io"}],"description":"A custom installer to handle deploying WordPress with composer",  
  "keywords":["wordpress"],"install-path":"..\/roots\/wordpress-core-installer"},{"name":"roots\/wp-config","version"  
  :"1.0.0","version_normalized":"1.0.0.0","source":{"type":"git","url":"https:\/\/github.com\/roots\/wp-config.git","  
  reference":"37c38230796119fb487fa03346ab0706ce6d4962"},"dist":{"type":"zip","url":"https:\/\/api.github.com\/repos\  
  /roots\/wp-config\/zipball\/37c38230796119fb487fa03346ab0706ce6d4962","reference":"37c38230796119fb487fa03346ab0706  
  ce6d4962","shasum":""},"require":{"php":">=5.6"},"require-dev":{"php-coveralls\/php-coveralls":"^2.1","phpunit\/php  
  unit":"^5.7","roave\/security-advisories":"dev-master","squizlabs\/php_codesniffer":"^3.3"},"time":"2018-08-10T14:1  
  8:38+00:00","type":"library","installation-source":"dist","autoload":{"psr-4":{"Roots\\WPConfig\\":"src"}},"notific  
  ation-url":"https:\/\/packagist.org\/downloads\/","license":["MIT"],"authors":[{"name":"Austin Pray","email":"austi  
  n@austinpray.com"}],"description":"Collect configuration values and safely define() them","install-path":"..\/roots  
  \/wp-config"},{"name":"roots\/wp-password-bcrypt","version":"1.0.0","version_normalized":"1.0.0.0","source":{"type"  
  :"git","url":"https:\/\/github.com\/roots\/wp-password-bcrypt.git","reference":"5cecd2e98ccc3193443cc5c5db9b3bc7abe  
  d5ffa"},"dist":{"type":"zip","url":"https:\/\/api.github.com\/repos\/roots\/wp-password-bcrypt\/zipball\/5cecd2e98c  
  cc3193443cc5c5db9b3bc7abed5ffa","reference":"5cecd2e98ccc3193443cc5c5db9b3bc7abed5ffa","shasum":""},"require":{"com  
  poser\/installers":"~1.0","php":">=5.5.0"},"require-dev":{"brain\/monkey":"^1.3.1","mockery\/mockery":"^0.9.4","php  
  unit\/phpunit":"^4.8.23|^5.2.9","squizlabs\/php_codesniffer":"^2.5.1"},"time":"2016-03-01T16:27:06+00:00","type":"l  
  ibrary","installation-source":"dist","autoload":{"files":["wp-password-bcrypt.php"]},"notification-url":"https:\/\/  
  packagist.org\/downloads\/","license":["MIT"],"authors":[{"name":"Scott Walkinshaw","email":"scott.walkinshaw@gmail  
  .com","homepage":"https:\/\/github.com\/swalkinshaw"},{"name":"qwp6t","homepage":"https:\/\/github.com\/qwp6t"},{"n  
  ame":"Jan Pingel","email":"jpingel@bitpiston.com","homepage":"http:\/\/janpingel.com"}],"description":"WordPress pl  
  ugin which replaces wp_hash_password and wp_check_password's phpass hasher with PHP 5.5's password_hash and passwor  
  d_verify using bcrypt.","homepage":"https:\/\/roots.io\/plugins\/wp-password-bcrypt","keywords":["wordpress wp bcry  
  pt password"],"install-path":"..\/roots\/wp-password-bcrypt"},{"name":"squizlabs\/php_codesniffer","version":"3.5.6  
  ","version_normalized":"3.5.6.0","source":{"type":"git","url":"https:\/\/github.com\/squizlabs\/PHP_CodeSniffer.git  
  ","reference":"e97627871a7eab2f70e59166072a6b767d5834e0"},"dist":{"type":"zip","url":"https:\/\/api.github.com\/rep  
  os\/squizlabs\/PHP_CodeSniffer\/zipball\/e97627871a7eab2f70e59166072a6b767d5834e0","reference":"e97627871a7eab2f70e  
  59166072a6b767d5834e0","shasum":""},"require":{"ext-simplexml":"*","ext-tokenizer":"*","ext-xmlwriter":"*","php":">  
  =5.4.0"},"require-dev":{"phpunit\/phpunit":"^4.0 || ^5.0 || ^6.0 || ^7.0"},"time":"2020-08-10T04:50:15+00:00","bin"  
  :["bin\/phpcs","bin\/phpcbf"],"type":"library","extra":{"branch-alias":{"dev-master":"3.x-dev"}},"installation-sour  
  ce":"dist","notification-url":"https:\/\/packagist.org\/downloads\/","license":["BSD-3-Clause"],"authors":[{"name":  
  "Greg Sherwood","role":"lead"}],"description":"PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects   
  violations of a defined set of coding standards.","homepage":"https:\/\/github.com\/squizlabs\/PHP_CodeSniffer","ke  
  ywords":["phpcs","standards"],"install-path":"..\/squizlabs\/php_codesniffer"},{"name":"symfony\/polyfill-ctype","v  
  ersion":"v1.18.1","version_normalized":"1.18.1.0","source":{"type":"git","url":"https:\/\/github.com\/symfony\/poly  
  fill-ctype.git","reference":"1c302646f6efc070cd46856e600e5e0684d6b454"},"dist":{"type":"zip","url":"https:\/\/api.g  
  ithub.com\/repos\/symfony\/polyfill-ctype\/zipball\/1c302646f6efc070cd46856e600e5e0684d6b454","reference":"1c302646  
  f6efc070cd46856e600e5e0684d6b454","shasum":""},"require":{"php":">=5.3.3"},"suggest":{"ext-ctype":"For best perform  
  ance"},"time":"2020-07-14T12:35:20+00:00","type":"library","extra":{"branch-alias":{"dev-master":"1.18-dev"},"thank  
  s":{"name":"symfony\/polyfill","url":"https:\/\/github.com\/symfony\/polyfill"}},"installation-source":"dist","auto  
  load":{"psr-4":{"Symfony\\Polyfill\\Ctype\\":""},"files":["bootstrap.php"]},"notification-url":"https:\/\/packagist  
  .org\/downloads\/","license":["MIT"],"authors":[{"name":"Gert de Pagter","email":"BackEndTea@gmail.com"},{"name":"S  
  ymfony Community","homepage":"https:\/\/symfony.com\/contributors"}],"description":"Symfony polyfill for ctype func  
  tions","homepage":"https:\/\/symfony.com","keywords":["compatibility","ctype","polyfill","portable"],"install-path"  
  :"..\/symfony\/polyfill-ctype"},{"name":"vlucas\/phpdotenv","version":"v4.1.8","version_normalized":"4.1.8.0","sour  
  ce":{"type":"git","url":"https:\/\/github.com\/vlucas\/phpdotenv.git","reference":"572af79d913627a9d70374d27a6f5d68  
  9a35de32"},"dist":{"type":"zip","url":"https:\/\/api.github.com\/repos\/vlucas\/phpdotenv\/zipball\/572af79d913627a  
  9d70374d27a6f5d689a35de32","reference":"572af79d913627a9d70374d27a6f5d689a35de32","shasum":""},"require":{"php":"^5  
  .5.9 || ^7.0 || ^8.0","phpoption\/phpoption":"^1.7.3","symfony\/polyfill-ctype":"^1.17"},"require-dev":{"bamarni\/c  
  omposer-bin-plugin":"^1.4.1","ext-filter":"*","ext-pcre":"*","phpunit\/phpunit":"^4.8.35 || ^5.7.27 || ^6.5.6 || ^7  
  .0"},"suggest":{"ext-filter":"Required to use the boolean validator.","ext-pcre":"Required to use most of the libra  
  ry."},"time":"2020-07-14T19:22:52+00:00","type":"library","extra":{"branch-alias":{"dev-master":"4.1-dev"}},"instal  
  lation-source":"dist","autoload":{"psr-4":{"Dotenv\\":"src\/"}},"notification-url":"https:\/\/packagist.org\/downlo  
  ads\/","license":["BSD-3-Clause"],"authors":[{"name":"Graham Campbell","email":"graham@alt-three.com","homepage":"h  
  ttps:\/\/gjcampbell.co.uk\/"},{"name":"Vance Lucas","email":"vance@vancelucas.com","homepage":"https:\/\/vancelucas  
  .com\/"}],"description":"Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagicall  
  y.","keywords":["dotenv","env","environment"],"install-path":"..\/vlucas\/phpdotenv"}]).
```

All of these issues from attempting to upgrade to Tailwind2.

---

## Post 13 by @hostis912 — 2020-12-07T20:59:42Z

This worked for me to run Sage 9 with Tailwind 2: [https://tailwindcss.com/docs/installation#post-css-7-compatibility-build](https://tailwindcss.com/docs/installation#post-css-7-compatibility-build)

```
npm uninstall tailwindcss postcss autoprefixer
npm install tailwindcss@npm:@tailwindcss/postcss7-compat postcss@^7 autoprefixer@^9
```

---

## Post 14 by @joshb — 2020-12-09T00:59:18Z

@hostis912

Would you mind explaining your process? When I install sage 9 and include tailwind, then update tailwind using the method you say worked for you, I still get the same errors as I’ve posted above.

Thanks!

---

## Post 15 by @joshb — 2020-12-09T02:19:49Z

Just caught this now and pasting here for those looking… Simon Swiss over at Tailwind Labs dove into Sage 9 and posted this. I’ll give it a go tomorrow.

[https://github.com/tailwindlabs/tailwindcss/discussions/2941#discussioncomment-145518](https://github.com/tailwindlabs/tailwindcss/discussions/2941#discussioncomment-145518)

---

## Post 16 by @hostis912 — 2020-12-09T08:14:58Z

I have now tried a new installation (Sage 9.0.10) and updated to Tailwind 2.

- Did not work.

Then i did: `npm uninstall tailwindcss postcss autoprefixer` and `npm i -D tailwindcss@npm:@tailwindcss/postcss7-compat postcss@^7 autoprefixer@^9`

- Now this did not work because of the postcss-loader.

So i downgraded postcss-laoder 4 to 3: `npm uninstall postcss-loader` and `npm i -D postcss-loader@3`

- Now it works.

Because of your hint i upgraded postcss-loader to v4 again and changed the webpack.config.preset.js like mentioned in [https://github.com/tailwindlabs/tailwindcss/discussions/2941#discussioncomment-145518](https://github.com/tailwindlabs/tailwindcss/discussions/2941#discussioncomment-145518).

- It works too.

---

## Post 17 by @knowler — 2020-12-09T14:46:18Z

Hey everyone. I tagged a release, 1.6.4, in `sage-installer` which includes Tailwind 2 support. Still gotta get that dependency bump merged into the Sage 9 branch and tag a new Sage 9 release, but if you want to use it in the meantime, do the following:

```
# This presumes you already have a Sage project started (either Composer created or Git cloned at the latest 9 tag)

# Update Sage Installer to 1.6.4
$ composer update roots/sage-installer

# Run the preset (might need to change the forward slashes to back slashes on Windows, I forget how that works)
$ ./vendor/bin/sage preset
```

---

## Post 18 by @joshb — 2020-12-09T19:23:14Z

I still can’t get this to work.

My process goes like:

1. Install Sage 9
2. Choose Tailwind as the preset
3. Update sage-installer
4. Run the preset, choose Tailwind
5. Run yarn && yarn build

Still get these errors:

```
ERROR Failed to compile with 2 errors 5:28:39 PM

 error in ./resources/assets/styles/main.scss

Module build failed: ModuleBuildError: Module build failed: ValidationError: Invalid options object. PostCSS Loader has been initialized using an options object that does not match the API schema.
 - options has an unknown property 'plugins'. These properties are valid:
   object { postcssOptions?, execute?, sourceMap? }
    at validate (/Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/schema-utils/dist/validate.js:104:11)
    at Object.loader (/Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/postcss-loader/dist/index.js:43:29)
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/webpack/lib/NormalModule.js:195:19
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/loader-runner/lib/LoaderRunner.js:367:11
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/loader-runner/lib/LoaderRunner.js:233:18

 @ multi ./scripts/main.js ./styles/main.scss

 error in ./resources/assets/styles/main.scss

Module build failed: ModuleBuildError: Module build failed: ValidationError: Invalid options object. PostCSS Loader has been initialized using an options object that does not match the API schema.
 - options has an unknown property 'plugins'. These properties are valid:
   object { postcssOptions?, execute?, sourceMap? }
    at validate (/Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/schema-utils/dist/validate.js:104:11)
    at Object.loader (/Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/postcss-loader/dist/index.js:43:29)
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/webpack/lib/NormalModule.js:195:19
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/loader-runner/lib/LoaderRunner.js:367:11
    at /Volumes/LaCie/_development/_trellis/_hybrid/trellis.project.build/site/web/app/themes/sage/node_modules/loader-runner/lib/LoaderRunner.js:233:18
```

---

## Post 19 by @knowler — 2020-12-09T21:14:19Z

I am unable to reproduce this using your instructions. It seems like either your Sage 9 install isn’t the latest or the Sage Installer update isn’t being brought in.

Now, I actually remembered that there are some easier directions I can give for using the update to Sage Installer:

```
$ composer create-project roots/sage my-sage-project dev-9-tailwind-2
```

This creates the Sage project called `my-sage-project` using the `9-tailwind-2` branch (which uses `roots/sage-installer` at `1.6.4`). I will see what I can do about getting this merged + tagged soon, so that you don’t need to specify the branch.

Even using this, I still did run into an error, but I was able to resolve it. The error was that Autoprefixer expects PostCSS 8 to be directly installed (`yarn add postcss --dev`), so I did that and I was able to build for development (`yarn build`) and production (`yarn build:production`) using Node 12 (Tailwind 2 requires Node 12 and greater).

**TL;DR: until I get a solution tagged for Sage 9, you can do the following:**

```
# Create a new project using the Sage 9 branch that uses Sage Installer 1.6.4
$ composer create-project roots/sage my-sage-project dev-9-tailwind-2

# Make sure you are using at least Node 12.13.0
# I use Volta for this: volta pin node@12

# Bump the PostCSS dependency to 8 (how I do it here is sloppy, but this is a temporary solution)
$ yarn add postcss --dev

# Run a build to confirm it works
$ yarn build
```

---

## Post 20 by @joshb — 2020-12-09T21:28:27Z

Thanks a bunch @knowler-  
I will give it a try a bit later this afternoon and let you know.  
Much appreciated!

---

## Post 21 by @joshb — 2020-12-09T23:48:47Z

Thanks so much to @knowler-  
I can confirm that this works very well without error on a fresh Sage 9 install.

What steps would be required to update a recent Sage 9 install running TW 1.9.6?

---

## Post 22 by @knowler — 2020-12-10T04:14:41Z

Using the same `webpack.config.preset.js`, 1.9.6 seems to work if you just set `tailwindcss` to that in the `package.json` and then still install `postcss` as a dev dependency. Also, make sure all the classes that are used are whatever they are for that version.

---

## Post 23 by @abgregs — 2020-12-18T20:10:33Z

@knowler Thank you for putting this together. I followed your install instructions and everything has worked fine so far except when defining fonts in my `main.scss` I get the following error.

```
Module build failed: ModuleBuildError: Module build failed: TypeError [ERR_INVALID_ARG_TYPE]: The "from" argument must be of type string. Received undefined
```

I’m using `@font-face` in `main.scss` the same as I have in previous Sage projects:

```
@font-face {
  font-family: "Raleway";
  src: url("../fonts/Raleway-VariableFont_wght.ttf");
  font-weight: 100 900;
  font-style: normal;
}
```

If I remove my `@font-face` rule then build works with no errors.

In my `package.json` I have:

```
"devDependencies": {
    "autoprefixer": "^10.0.1",
    "browser-sync": "^2.26.13",
    "browsersync-webpack-plugin": "^0.6.0",
    "bs-html-injector": "~3.0",
    "buble-loader": "^0.4.1",
    "cache-loader": "~1.2.5",
    "clean-webpack-plugin": "^0.1.18",
    "copy-globs-webpack-plugin": "^0.2.0",
    "css-loader": "^0.28.11",
    "cssnano": "^4.0.5",
    "eslint": "~4.19.1",
    "eslint-loader": "^4.0.2",
    "eslint-plugin-import": "^2.14.0",
    "extract-text-webpack-plugin": "~3.0.2",
    "file-loader": "^6.2.0",
    "friendly-errors-webpack-plugin": "^1.6.1",
    "imagemin-mozjpeg": "^9.0.0",
    "imagemin-webpack-plugin": "^2.4.2",
    "import-glob": "~1.5",
    "node-sass": "^5.0.0",
    "postcss": "^8.2.1",
    "postcss-loader": "^4.0.4",
    "postcss-safe-parser": "^5.0.2",
    "resolve-url-loader": "^3.1.2",
    "rimraf": "^3.0.2",
    "sass-loader": "~6.0.7",
    "style-loader": "^0.23.1",
    "stylelint": "^13.7.2",
    "stylelint-config-standard": "^20.0.0",
    "stylelint-webpack-plugin": "^0.10.5",
    "tailwindcss": "^2.0.1",
    "uglifyjs-webpack-plugin": "^1.3.0",
    "url-loader": "^4.1.1",
    "webpack": "~3.10.0",
    "webpack-assets-manifest": "^1.0.0",
    "webpack-dev-middleware": "~2.0.4",
    "webpack-hot-middleware": "^2.22.3",
    "webpack-merge": "~4.1.4",
    "yargs": "^16.1.0"
  },
```

Has anyone else had this issue? Thanks in advance for any help or suggestions.

---

## Post 24 by @octoxan — 2020-12-21T19:49:53Z

Having the exact same issue. Can’t reference any fonts or images in the scss or it throws the error

```
Module build failed: ModuleBuildError: Module build failed: TypeError [ERR_INVALID_ARG_TYPE]: The "from" argument must be of type string. Received undefined
```

Below is our package.json

```
{
  "name": "sage",
  "version": "9.0.10",
  "author": "Roots <team@roots.io>",
  "homepage": "https://roots.io/sage/",
  "private": true,
  "repository": {
    "type": "git",
    "url": "git://github.com/roots/sage.git"
  },
  "bugs": {
    "url": "https://github.com/roots/sage/issues"
  },
  "licenses": [
    {
      "type": "MIT",
      "url": "http://opensource.org/licenses/MIT"
    }
  ],
  "browserslist": [
    "last 2 versions",
    "android 4",
    "opera 12"
  ],
  "scripts": {
    "build": "webpack --progress --config resources/assets/build/webpack.config.js",
    "build:production": "webpack --env.production --progress --config resources/assets/build/webpack.config.js",
    "build:profile": "webpack --progress --profile --json --config resources/assets/build/webpack.config.js",
    "start": "webpack --hide-modules --watch --config resources/assets/build/webpack.config.js",
    "rmdist": "rimraf dist",
    "lint": "npm run -s lint:scripts && npm run -s lint:styles",
    "lint:scripts": "eslint resources/assets/scripts resources/assets/build",
    "lint:styles": "stylelint \"resources/assets/styles/**/*.{css,sass,scss,sss,less}\"",
    "test": "npm run -s lint"
  },
  "engines": {
    "node": ">= 8.0.0"
  },
  "devDependencies": {
    "autoprefixer": "^9.8.6",
    "browser-sync": "^2.26.13",
    "browsersync-webpack-plugin": "^0.6.0",
    "bs-html-injector": "~3.0",
    "buble-loader": "^0.4.1",
    "cache-loader": "~1.2.5",
    "clean-webpack-plugin": "^0.1.19",
    "copy-globs-webpack-plugin": "^0.2.0",
    "css-loader": "^0.28.11",
    "cssnano": "^4.0.5",
    "eslint": "~4.19.1",
    "eslint-loader": "^4.0.2",
    "eslint-plugin-import": "^2.14.0",
    "extract-text-webpack-plugin": "^3.0.2",
    "file-loader": "^6.2.0",
    "friendly-errors-webpack-plugin": "^1.7.0",
    "imagemin-mozjpeg": "^9.0.0",
    "imagemin-webpack-plugin": "^2.4.2",
    "import-glob": "~1.5",
    "node-sass": "^5.0.0",
    "postcss": "^8.2.1",
    "postcss-loader": "^4.0.4",
    "postcss-safe-parser": "^5.0.2",
    "resolve-url-loader": "^3.1.2",
    "rimraf": "^3.0.2",
    "sass-loader": "~6.0",
    "style-loader": "^0.23.1",
    "stylelint": "^13.8.0",
    "stylelint-config-recommended": "^3.0.0",
    "stylelint-config-standard": "^20.0.0",
    "stylelint-webpack-plugin": "^0.10.5",
    "tailwindcss": "^2.0.2",
    "uglifyjs-webpack-plugin": "^1.3.0",
    "url-loader": "^4.1.1",
    "webpack": "^3.12.0",
    "webpack-assets-manifest": "^1.0.0",
    "webpack-dev-middleware": "~2.0.4",
    "webpack-hot-middleware": "^2.22.3",
    "webpack-merge": "^4.1.5",
    "yargs": "^16.2.0"
  },
  "dependencies": {
    "graceful-fs": "^4.2.4",
    "jquery": "^3.3.1",
    "node": "^14.15.2",
    "webpack-dev-server": "^3.11.0"
  }
}```
```

---

## Post 25 by @knowler — 2020-12-22T00:16:59Z

@abgregs @octoxan Can one of you make a minimal reproduction of this issue in a git repo for me to assess?

---

## Post 26 by @abgregs — 2020-12-22T17:54:35Z

@knowler @octoxan Here is minimal reproduction I made. I followed your install instructions on a fresh project. After installing, `yarn build` compiles successfully with no issues. Then, the only other thing I did is throw a file in the fonts folder and attempt to define a new `@font-face` rule in `main.scss` and I get the same error.

[https://github.com/abgregs/sage-test](https://github.com/abgregs/sage-test)

Module build failed: ModuleBuildError: Module build failed: TypeError [ERR\_INVALID\_ARG\_TYPE]: The “from” argument must be of type string. Received undefined  
at validateString (internal/validators.js:121:11)  
at Object.relative (path.js:1053:5)  
at Object.loader (/Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/file-loader/dist/index.js:78:72)  
at Object.loader (/Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/url-loader/dist/index.js:127:19)  
at /Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/webpack/lib/NormalModule.js:195:19  
at /Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/loader-runner/lib/LoaderRunner.js:367:11  
at /Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/loader-runner/lib/LoaderRunner.js:233:18  
at runSyncOrAsync (/Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/loader-runner/lib/LoaderRunner.js:143:3)  
at iterateNormalLoaders (/Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/loader-runner/lib/LoaderRunner.js:232:2)  
at /Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/loader-runner/lib/LoaderRunner.js:205:4  
at /Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/enhanced-resolve/lib/CachedInputFileSystem.js:70:14  
at processTicksAndRejections (internal/process/task\_queues.js:75:11)

error in ./resources/assets/styles/main.scss

Module build failed: ModuleBuildError: Module build failed: TypeError [ERR\_INVALID\_ARG\_TYPE]: The “from” argument must be of type string. Received undefined  
at validateString (internal/validators.js:121:11)  
at Object.relative (path.js:1053:5)  
at Object.loader (/Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/file-loader/dist/index.js:78:72)  
at Object.loader (/Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/url-loader/dist/index.js:127:19)  
at /Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/webpack/lib/NormalModule.js:195:19  
at /Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/loader-runner/lib/LoaderRunner.js:367:11  
at /Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/loader-runner/lib/LoaderRunner.js:233:18  
at runSyncOrAsync (/Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/loader-runner/lib/LoaderRunner.js:143:3)  
at iterateNormalLoaders (/Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/loader-runner/lib/LoaderRunner.js:232:2)  
at Array. (/Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/loader-runner/lib/LoaderRunner.js:205:4)  
at Storage.finished (/Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/enhanced-resolve/lib/CachedInputFileSystem.js:40:15)  
at /Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/enhanced-resolve/lib/CachedInputFileSystem.js:77:9  
at /Users/austingregersen/Local Sites/sage-test/app/public/wp-content/themes/sage-test/node\_modules/graceful-fs/graceful-fs.js:123:16  
at FSReqCallback.readFileAfterClose [as oncomplete] (internal/fs/read\_file\_context.js:63:3)

---

## Post 27 by @knowler — 2020-12-22T22:05:05Z

Thanks for creating that! I pulled it and got the same error (I reinstalled the Node modules with Node 12).

My first guess is that it’s an issue with `file-loader`. Out of curiosity, created a vanilla Sage 9 project and copied the font stuff over. I got a different error.

```
▷ yarn build
yarn run v1.22.10
$ webpack --progress --config resources/assets/build/webpack.config.js
 95% emitting

 ERROR Failed to compile with 2 errors 3:58:06 PM

 error in ./resources/assets/styles/main.scss

Module build failed: ModuleBuildError: Module build failed: Error: resolve-url-loader: CSS error
  predicate must return an absolute path or the result of calling next()
  at file:///Users/knowler/code/roots/sage-9/resources/assets/styles/main.scss:9446:3
    at encodeError (/Users/knowler/code/roots/sage-9/node_modules/resolve-url-loader/index.js:219:12)
    at onFailure (/Users/knowler/code/roots/sage-9/node_modules/resolve-url-loader/index.js:176:14)
    at /Users/knowler/code/roots/sage-9/node_modules/webpack/lib/NormalModule.js:195:19
    at /Users/knowler/code/roots/sage-9/node_modules/loader-runner/lib/LoaderRunner.js:367:11
    at /Users/knowler/code/roots/sage-9/node_modules/loader-runner/lib/LoaderRunner.js:233:18
    at context.callback (/Users/knowler/code/roots/sage-9/node_modules/loader-runner/lib/LoaderRunner.js:111:13)
    at onFailure (/Users/knowler/code/roots/sage-9/node_modules/resolve-url-loader/index.js:176:5)

 @ multi ./scripts/main.js ./styles/main.scss

 error in ./resources/assets/styles/main.scss

Module build failed: ModuleBuildError: Module build failed: Error: resolve-url-loader: CSS error
  predicate must return an absolute path or the result of calling next()
  at file:///Users/knowler/code/roots/sage-9/resources/assets/styles/main.scss:9446:3
    at encodeError (/Users/knowler/code/roots/sage-9/node_modules/resolve-url-loader/index.js:219:12)
    at onFailure (/Users/knowler/code/roots/sage-9/node_modules/resolve-url-loader/index.js:176:14)
    at /Users/knowler/code/roots/sage-9/node_modules/webpack/lib/NormalModule.js:195:19
    at /Users/knowler/code/roots/sage-9/node_modules/loader-runner/lib/LoaderRunner.js:367:11
    at /Users/knowler/code/roots/sage-9/node_modules/loader-runner/lib/LoaderRunner.js:233:18
    at context.callback (/Users/knowler/code/roots/sage-9/node_modules/loader-runner/lib/LoaderRunner.js:111:13)
    at onFailure (/Users/knowler/code/roots/sage-9/node_modules/resolve-url-loader/index.js:176:5)

                    Asset Size Chunks Chunk Names
          scripts/main.js 243 kB 0 [emitted] main
    scripts/customizer.js 3.24 kB 1 [emitted] customizer
      scripts/main.js.map 396 kB 0 [emitted] main
scripts/customizer.js.map 3.08 kB 1 [emitted] customizer
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
```

This should have worked so I think there’s another underlying issue with the webpack config. I will continue to investigate this.

---

## Post 28 by @ciromattia — 2020-12-23T11:05:22Z

I got it working on a Sage 9 install upgrading the following packages to those versions:

```
"autoprefixer": "^10.1.0",
"postcss": "^8.2.1",
"postcss-loader": "^4.0.4",
"tailwindcss": "^2.0.2",
```

I had also to remove some “wrong” classes on the generated preset, mainly on `_form.scss`.  
Now I’m looking to get rid of SCSS and use PostCSS only.

---

## Post 29 by @abgregs — 2020-12-23T22:33:54Z

@ciromattia @knowler Hmm. Those changes didn’t work for me. They didn’t seem to cause any other issues, so I left them and then looked at downgrading `resolve-url-loader` and `file-loader` to previous versions or before breaking changes as those seemed most likely to be responsible based on the error message I was still getting.

The one change that removed any errors was moving to `file-loader@5.1.0`, which allowed me to successfully compile, however despite having no errors and the styles being applied, I’m not actually seeing the font display. In other words, the styles are applied and the font file appears to have loaded, but there is no actual change in appearance to the text itself. See attached. This font should be bold and set to Raleway but instead still has the same Tailwind defaults I had been seeing previously.

 ![Screen Shot 2020-12-23 at 3.24.10 PM](https://discourse.roots.io/uploads/default/original/2X/b/b842c1b44c7a1b45153ef74a1833d93eff7a68ca.png)

Should look like

 ![Screen Shot 2020-12-23 at 3.29.08 PM](https://discourse.roots.io/uploads/default/original/2X/b/bc81a0c968a43145baadc9798c98342dcfca88d5.png)

Hoping I’m not creating too big a mess here with version or dependency issues for these different packages. @ciromattia Your fonts were imported without error and on the front end they show up as expected?

---

## Post 30 by @strarsis — 2021-01-02T15:02:35Z

This PR may fix the issue: [https://github.com/roots/sage/pull/2603](https://github.com/roots/sage/pull/2603)

---

## Post 31 by @abgregs — 2021-01-08T18:22:38Z

@strarsis Thanks, I bumped `file-loader` down to `4.3.0` corresponding to the version used in that PR and fonts and Tailwind are working as expected for me without any issue.

---

## Post 32 by @joshb — 2021-01-13T22:47:47Z

Working Sage 9, Webpack 5 and Tailwind 2.0.2 repo available here with updated theme installation instructions. Browsersync works again!

\*\*\*IGNORE, there are issues

-The thread that lead to this. Thanks for all the help @strarsis

> [@Sage 9 browsersync not updating right](https://discourse.roots.io/t/sage-9-browsersync-not-updating-right/10648/55):
>
> @strarsis - thanks for all of that… I literally just put together my own working repo here: Everything works fine on mine. I just tried yours and on yarn watch it returns this error: [webpack-cli] ReferenceError: merge is not defined I updated the theme installation instructions as well. Theme installation Clone this repo and update the publicPath and devUrl in config.json # @ resources/assets/config.json { "entry": { "main": [ "./scripts/main.js", "./styles/main.scss" …

---

## Post 33 by @ciromattia — 2021-01-18T14:16:00Z

([switching from this thread](https://discourse.roots.io/t/sage-9-browsersync-not-updating-right/10648))

After further investigation, RTFM and some mangling with webpack5 I got a completely working Sage 9 / TailwindCSS 2 / Webpack 5 / PostCSS 8 setup.  
It’s a quite heavily customized sage install, so your mileage may vary, the main customizations are:

- needs Node 10+ (webpack 5 requirement)
- it’s _TailwindCSS-tailored_ so if you want Bootstrap back you have to restore almost oll the styles and even jquery dependency
- yeah, _jquery is no more_ a dependency :wink:
- it’s _CSS-based_ so if you want to use SASS you have to rename the styles, though webpack config should support it out-of-the-box (but I made no tests); PostCSS manages imports, nesting and autoprefixing and TailwindCSS every other feature, so you should ask yourself if you really need SASS with an utility-first framework
- uses webpack 5 new Assets Modules so `file-loader` and `url-loader` are gone for good

@joshb the watcher should be fully working, if you want to try it out.

The branch is `9-webpack5-tailwind2`

> **[ciromattia/sage](https://github.com/ciromattia/sage/tree/9-webpack5-tailwind2)**
>
> WordPress starter theme with a modern development workflow - ciromattia/sage

---

## Post 34 by @joshb — 2021-01-18T19:01:50Z

@ciromattia

I just setup your fork and at first I was still getting the reloading browsers looping thing… but it appears to have gone away for now:

```
[Browsersync] Reloading Browsers... (buffered 83 events)
[Browsersync] Reloading Browsers... (buffered 6 events)
[Browsersync] Reloading Browsers... (buffered 131 events)
```

Other than that, blade files are updating quickly and css files are injecting! Great news! It will be a little strange not running scss when needed but otherwise, this is nice. Thanks.

I’ll report back if I have issues with the browsersync loop thingymabobber.

---

## Post 35 by @ciromattia — 2021-01-19T08:19:08Z

I just got an issue with sage JS route mechanism not firing when watching, it’s an issue with the vanilla JS I changed in `main.js` so if your JS isn’t working change the last snippet in `main.js` with the following:

```
if (document.readyState !== 'loading') {
  routes.loadEvents();
} else {
  document.addEventListener('DOMContentLoaded', () => {
    routes.loadEvents();
  }, false);
}
```

---

## Post 36 by @elisabeth — 2021-01-19T15:43:44Z

Thank you! This is exactly what I was thinking of trying to build today, but this is so much better.

---

## Post 37 by @strarsis — 2021-01-19T17:23:29Z

So this is an interference of the sage routing with browser sync?

---

## Post 38 by @ciromattia — 2021-01-20T10:21:49Z

@strarsis with JQuery everything works flawlessly probably the `ready()` function does something under the hood, but I was trying to get rid of jQuery.  
I assume that browsersync for some reason doesn’t emit `DOMDocumentLoaded` event, so I tried with the “update” method and it works:

```
if (document.readyState !== 'loading') {
  routes.loadEvents();
}
```

---

## Post 39 by @grzesiek1owline — 2021-04-14T15:47:38Z

I am testing this starter but unfortunately there is a problem. During `yarn build: production` purgecss removes almost all styles. The `yarn build` command loads all, even unused, styles. Tested on node12 and node14. Can you help me?

---

## Post 40 by @strarsis — 2021-04-14T16:22:21Z

Are you using Sage 9, the Sage 9.1 update branch or Sage 10?

---

## Post 41 by @ciromattia — 2021-04-14T16:36:10Z

Going further with development I had some issues with PurgeCSS as managed by webpack, so I switched to the Tailwind-integrated one.

On the latest versions in my branch you can see I commented everything about PurgeCSS in `resources/assets/build/webpack.config.optimize.js` and switched on the `purge` section in `resources/assets/styles/tailwind.config.js`.

Did you follow this configuration?

---

## Post 42 by @grzesiek1owline — 2021-04-14T18:00:55Z

Yes. I download last repo, use `composer` , `yarn` and `yarn build`. I dont change anything.

---

## Post 43 by @pi43r — 2021-05-05T00:29:24Z

I came across the same issue after I finished building the whole site and realized that I never tested production.  
The error seems to be that the purge arguments are set relative to the tailwind config, while it should be relative to the root folder. I am not sure if this is only a Windows/WSL problem, though.  
So this fixed it in `tailwind.config.js`:

```
purge: [
      './app/**/*.php',
      './resources/views/**/*.php',
      './resources/assets/scripts/**/*.js',
    ],
```

---

## Post 44 by @l77 — 2021-05-18T15:05:18Z

Thanks, file-loader@5.1.0 worked for me!

---

## Post 45 by @l77 — 2021-05-18T15:42:06Z

> [@l77](#):
>
> 5.1.0

but also had problems with font appearances - 4.3.0 worked

---

## Post 46 by @christianmagill — 2021-12-03T20:58:45Z

Has anyone gotten this to work with JIT mode?

It works for me when I build, but not when I use BrowserSync

---

## Post 47 by @artshostak — 2022-01-14T23:39:03Z

There are still some issues with the `__webpack_hmr` error in the console when running `yarn start`:  
`Failed to load resource: the server responded with a status of 404 (Not Found)`

But for the most part @strarsis’s repo ([GitHub - strarsis/sage9-webpack5-tailwind: Sage 9 with webpack and tailwind](https://github.com/strarsis/sage9-webpack5-tailwind)) and @pi43r’s purge fix instructions ([Tailwind v2 and Sage 9 - #43 by pi43r](https://discourse.roots.io/t/tailwind-v2-and-sage-9/19598/43)) combined did the trick for bringing up an old Sage 9 project with Tailwind up to date.

Thank you to everyone for posting their solutions, much appreciated!

---

## Post 48 by @strarsis — 2022-01-15T15:25:04Z

Is this the same issue?

> <https://github.com/strarsis/sage9-webpack5-tailwind/issues/4#issue-999932503>
>
> It seems `webpack-hot-middle-ware` is no longer working with `browser-sync-webpa…ck-plugin`.\n
> 
> I got error when runing webpack:
> `http://localhost:3000/__webpack_hmr 404 (Not Found)`

Those issues are very hard to track down. I already have tried to get it fixed.

Now the loaders have also changed, some were abandoned, some replace them.  
A new branch is opened now that tries to use the latest packages (state 2021 end/2022):

> **[GitHub - strarsis/sage at webpack5-url-update](https://github.com/strarsis/sage/tree/webpack5-url-update)**
>
> webpack5-url-update
