Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gulp uncss删除使用javascript添加的类_Javascript_Html_Css_Gulp_Gulp Uncss - Fatal编程技术网

gulp uncss删除使用javascript添加的类

gulp uncss删除使用javascript添加的类,javascript,html,css,gulp,gulp-uncss,Javascript,Html,Css,Gulp,Gulp Uncss,我的gulp uncss的gulp配置为 gulp.task('uncssme', function () { return gulp.src('src/css/**/*.css') .pipe(uncss({ html: ['src/**/*.html'] })) .pipe(gulp.dest('dist/css')) }); 使用uncss会从最终的css文件中删除“newClass”选择器,因为该类不会直接在.html文件中使用,而是通过js动

我的gulp uncss的gulp配置为

gulp.task('uncssme', function () {

return gulp.src('src/css/**/*.css')
    .pipe(uncss({
        html: ['src/**/*.html']
    }))
    .pipe(gulp.dest('dist/css'))
});
使用uncss会从最终的css文件中删除“newClass”选择器,因为该类不会直接在.html文件中使用,而是通过js动态添加的

document.getElementById('good').className += ' newClass';
编辑:
我已经在使用/*UNSS:忽略*/使它工作,但是每次在.js中添加一个类,但不在.html < /p> < p>中,这是没有意义的。我与Uncss有同样的问题,唯一的方法是使用忽略注释,这不是我认为是很好的解决方案。p> 我建议您尝试purifycss插件()。
您可以同时设置html和js文件,然后css被取消加密或净化,这就是我在遇到您的问题时所寻找的

也许,您可以在js widh
is-
中为每个类添加前缀,并在gulp任务中添加带有regex的ignore选项

gulp.task('uncssme', function () {

return gulp.src('src/css/**/*.css')
    .pipe(uncss({
        html: ['src/**/*.html'],
        ignore: [^\.is-.*]
    }))
    .pipe(gulp.dest('dist/css'))
});

@对这个问题投了否决票的人,有点理智。若你们并没有什么可以通过添加评论来改善问题,不要盲目地投反对票。我并没有投反对票,但我可以理解他们为什么投反对票。你知道吗,特别是下面演示“[忽略]特定选择器”的片段?我已经在使用/*uncss:ignore*/(忽略)跟踪[忽略]内容了。而且他们的问题跟踪响应非常差。此外,为每个新添加的选择器设置ignore比简化任务更为不必要和繁重。我宁愿选择其他插件。你怎么想?任何更好的插件,请建议。我希望我可以,但我从来没有尝试过这种性质的东西。通过js添加的任何类都需要被列入白名单,这是有道理的。他们也可以让任务扫描js文件,但这并没有考虑像
$(this).addClass('brand-'+userColor)
之类的事情。是的,我在想,如果一些js解析与UNCS同步,它是否可以工作。不过无论如何,谢谢。奇怪的是,我在网上其他任何地方都找不到类似的查询。啊,谢谢。我只知道它的名字,但完全忘了探索它。现在,在使用它时,我得到了TypeError:无法读取未定义的属性“slice”。但我会调查的。:)好的,这个错误被解决了,但它似乎没有运行,即使是简单的情况,也就是删除一个不在任何地方使用的类选择器。如果这不起作用,我无法进一步检查它是否保持通过js添加的类。我的gulp是:gulp.task('purifycss',function(){return gulp.src('src/bundle/css/***.css').pipe(purify(['src/bundle/js/***.js','src/***/***.html')).pipe(gulp dest('src/bundle/css')));这是我的,100%工作并用于生产:gulp.task('compile:css',['clear:dist'],function(){return gulp.src('./src/static/scss/style.scss')。pipe(sourcemaps.init()).pipe(sass().on('error',sass.logError)).pipe(purify(['./src/static/js/*.js','./src/*.html'])。pipe(refexer)({浏览器:['last 10 versions','IE 7']}).pipe(csscomb()).pipe(cleanCSS()).pipe(sourcemaps.write('./maps/')).pipe(gulp.dest('./dist/static/css/'));在你给出配置之后,我尝试了我和你的配置。下面是我的观察结果。奇怪的事情。如果我在css中有两个选择器“.js newClass”和“.newClass1”,并且只有前者是通过js添加的。所以purifycss仍然保留“.newClass1”,因为两者中的字符串匹配“newClass”,这就是我的配置看起来不起作用的原因。M在其他情况下,如果是“.newClassA”,则它将删除此项,因为它考虑了“newClass”和“newClass(number)”“same.allow”.js newClass hello'和“.newClass1”被视为相同的。因此它保留了这两个名称,尽管“.newClass1”没有在任何地方使用。哦,很好。谢谢。我仍然在添加purifyjs时遇到一些问题,正如前面的回答中所建议的那样。但是你的解决方案似乎也不错,因为我可以在类似jsa(js添加)的前缀只通过js添加到类中。我刚刚尝试了正则表达式,但它不起作用,非常奇怪,但是像ignore:['.is newClass']这样的硬编码文字起作用了:p正则表达式将像ignore:[^\.is-.*]一样使用,即在数组中没有引号。然后它就会起作用。