New Adventures with Grunt UnCSS

I recently upgraded Grunt UnCSS to its latest version 0.4.2 and somehow got a few errors that I didn't get before, even though nothing had changed, except for the plugin itself of course.

Grunt UnCSS error #1 with Typekit URL:

    ➜ ~/Sites/repos/missed-in-hkg (master) grunt uncss
    Running “uncss:dist” (uncss) task
    Fatal error: uncss/node_modules/css: unable to parse http://use.typekit.net/c/1a04cf/1w;proxima-nova,2,b5t:P:n3,b5w:P:n4/k?3bb2a6e53c9684ffdc9a9bf41d5b2a62183a574751fd848f7874…:
    missing '{' near line 13:1
     8:  </head>
     9:    <body>
     10:    <h1>403 - Forbidden</h1>
     11:   </body>
     12:  </html>
     13: ->

This has never been an issue before and I'm not sure why UnCSS now wants to parse these external URLs (even though I can see that might make sense…), but it seems to be due to some of the recent changes in how UnCSS works. I filed an issue on this, but so far haven't received any feedback.

As the current workaround to circumvent this behaviour and to avoid Typekit URLs being followed, I added a RegEx pattern to the ignoreSheets option:

    options: {
      ignoreSheets : [/use.typekit/]
    }

Grunt UnCSS error #2 with .php input files:

While I had always specified one HTML file and one PHP file for the input list, this configuration:

    // original input list including the .php file

    files: {
      'css/app.un.css': ['index.html', 'read.php']
    }

then returned the following error:

    ➜ ~/Sites/repos/missed-in-hkg (master) grunt uncss
    Running “uncss:dist” (uncss) task
    Fatal error: PhantomJS: Cannot open about:blank

I'm quite surprised this doesn't work anymore, since I"ve been specifying the PHP file for quite some time, even though it seems to be a fairly widespread problem with PhantomJS. Unfortunately I did not find a better workaround than to remove the PHP file from the input file list for now :(

    // Just for proper completeness, input list after removing the .php file ;)
    files: {
      'css/app.un.css': ['index.html']
    }

After these two steps listed above, Grunt UnCSS again runs as expected and works just fine. Ignoring the Typkit URL of course isn't a problem at all and I can also live with the option of removing the PHP file from input, even though I"d prefer being able to use it.