为什么我没有从gulp-uncss获取新的CSS文件?

时间:2015-08-16 16:19:04

标签: gulp uncss

我只是想进一步压缩css文件。我得到一个特殊的错误。我想知道为什么我会得到一个ReferenceError: Can't find variable: jQuery来完成一个仅包含来自HTML和HTML的选择器的任务。 CSS?除非它在我的HTML中读取有选择器的脚本标签?

UPDATE 我忘了提到任务没有吐出来,一个新的CSS文件!

另外我注意到许多gulp任务在目录前面有./,目的是什么? 无论如何,见下文:

这是我的Gulp文件,我想包含它......

gulp.task('uncss', function() {
return gulp.src('site/assets/stylesheets/style.min.81113a5b.css')
    .pipe(uncss({
        html: [
            'site/**/*.html'
        ]
    }))
    .pipe(gulp.dest('./out'));

});

这是我得到的错误。

ReferenceError: Can't find variable: jQuery

  file:///Users/antonioortiz/Sites/antonioortiz.github.io/site/cookie_control/cookie_example/index.html:12
  file:///Users/antonioortiz/Sites/antonioortiz.github.io/site/cookie_control/cookie_example/index.html:43

/Users/antonioortiz/Sites/antonioortiz.github.io/node_modules/gulp-uncss/node_modules/uncss/node_modules/bluebird/js/main/async.js:43
        fn = function () { throw arg; };
                                 ^
Error: uncss/node_modules/css: unable to parse undefined:
missing '}' near line 1:46497
    1:     -> ebkit-min-device-pixel-ratio:0){@media{.

    at error (/Users/antonioortiz/Sites/antonioortiz.github.io/node_modules/gulp-uncss/node_modules/uncss/node_modules/css/node_modules/css-parse/index.js:57:15)
    at declarations (/Users/antonioortiz/Sites/antonioortiz.github.io/node_modules/gulp-uncss/node_modules/uncss/node_modules/css/node_modules/css-parse/index.js:224:26)
    at rule (/Users/antonioortiz/Sites/antonioortiz.github.io/node_modules/gulp-uncss/node_modules/uncss/node_modules/css/node_modules/css-parse/index.js:481:21)
    at rules (/Users/antonioortiz/Sites/antonioortiz.github.io/node_modules/gulp-uncss/node_modules/uncss/node_modules/css/node_modules/css-parse/index.js:103:56)
    at atmedia (/Users/antonioortiz/Sites/antonioortiz.github.io/node_modules/gulp-uncss/node_modules/uncss/node_modules/css/node_modules/css-parse/index.js:345:35)
    at atrule (/Users/antonioortiz/Sites/antonioortiz.github.io/node_modules/gulp-uncss/node_modules/uncss/node_modules/css/node_modules/css-parse/index.js:457:10)
    at rules (/Users/antonioortiz/Sites/antonioortiz.github.io/node_modules/gulp-uncss/node_modules/uncss/node_modules/css/node_modules/css-parse/index.js:103:44)
    at stylesheet (/Users/antonioortiz/Sites/antonioortiz.github.io/node_modules/gulp-uncss/node_modules/uncss/node_modules/css/node_modules/css-parse/index.js:73:16)
    at Object.module.exports [as parse] (/Users/antonioortiz/Sites/antonioortiz.github.io/node_modules/gulp-uncss/node_modules/uncss/node_modules/css/node_modules/css-parse/index.js:485:10)
    at process (/Users/antonioortiz/Sites/antonioortiz.github.io/node_modules/gulp-uncss/node_modules/uncss/src/uncss.js:158:22)
    at tryCatcher (/Users/antonioortiz/Sites/antonioortiz.github.io/node_modules/gulp-uncss/node_modules/uncss/node_modules/bluebird/js/main/util.js:26:23)
    at Promise._settlePromiseFromHandler (/Users/antonioortiz/Sites/antonioortiz.github.io/node_modules/gulp-uncss/node_modules/uncss/node_modules/bluebird/js/main/promise.js:501:31)
    at Promise._settlePromiseAt (/Users/antonioortiz/Sites/antonioortiz.github.io/node_modules/gulp-uncss/node_modules/uncss/node_modules/bluebird/js/main/promise.js:577:18)
    at Promise._settlePromises (/Users/antonioortiz/Sites/antonioortiz.github.io/node_modules/gulp-uncss/node_modules/uncss/node_modules/bluebird/js/main/promise.js:693:14)
    at Async._drainQueue (/Users/antonioortiz/Sites/antonioortiz.github.io/node_modules/gulp-uncss/node_modules/uncss/node_modules/bluebird/js/main/async.js:123:16)
    at Async._drainQueues (/Users/antonioortiz/Sites/antonioortiz.github.io/node_modules/gulp-uncss/node_modules/uncss/node_modules/bluebird/js/main/async.js:133:10)

2 个答案:

答案 0 :(得分:0)

取自UnCSS documentation

  

如何?

     

UnCSS删除未使用规则的过程如下:

     
      
  1. PhantomJS加载HTML文件并执行JavaScript
  2.   
  3. ...
  4.   

这意味着您的页面将被加载到无头浏览器中,以便该库能够找到真正使用的选择器。

我从未使用过UnCSS,但在我看来是:

  • 如果发生错误,它会抛出JS错误;
  • 如果您的CSS没有错误,它会抱怨。

这就是你收到这些错误的原因。

答案 1 :(得分:0)

听起来与Issue 157类似。解决方案 - 尝试使用/site/**/*.html之类的路径代替site/**/*.html

接下来要尝试的是为timeout option设置更高的值,以便为jQuery提供更多的加载时间。