0

我只是想进一步压缩css文件。而且我遇到了一个奇怪的错误。我想知道为什么我会得到一个ReferenceError: Can't find variable: jQuery只包含 HTML 和 CSS 选择器的任务?除非它正在读取我的 HTML 中具有选择器的脚本标签?

更新我忘了提到任务不是吐出来,一个新的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)
4

2 回答 2

0

取自UnCSS 文档

如何?

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

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

这意味着您的页面将在无头浏览器中加载,因此该库能够找到真正使用了哪些选择器。

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

  • 万一发生,它会抛出 JS 错误;
  • 如果你的 CSS 不是没有错误的,它会抱怨。

这就是为什么你会收到这些错误。

于 2015-08-17T11:50:53.763 回答
0

听起来类似于第 157 期。解决方案 - 尝试使用类似的路径/site/**/*.html而不是site/**/*.html.

接下来要尝试的是为该timeout选项设置更高的值,以使 jQuery 有更多的时间来加载。

于 2015-08-17T18:05:12.580 回答