如何在Gulp中将CSS文件的内容注入HTML?

Evg*_*nii 36 html javascript css gulp

我需要将样式表的内容插入到<head>HTML页面中.我怎么能在Gulp做到这一点?

之前(我拥有):

<head>
  <link href="style.css" rel="stylesheet" type="text/css" />
</head>
Run Code Online (Sandbox Code Playgroud)

之后(我想要的):

<head>
  <style>
     p { color: pink; }
  </style>
</head>
Run Code Online (Sandbox Code Playgroud)

请注意,我不需要将CSS内联到元素中,而只需将CSS的内容放入<head>.

Ove*_*ous 45

您可以轻松使用gulp-replace,如下所示:

var gulp = require('gulp'),
    replace = require('gulp-replace'),
    fs = require('fs');

// in your task
return gulp.src(...)
  .pipe(replace(/<link href="style.css"[^>]*>/, function(s) {
      var style = fs.readFileSync('style.css', 'utf8');
      return '<style>\n' + style + '\n</style>';
  }))
  .pipe(gulp.dest(...));
Run Code Online (Sandbox Code Playgroud)

您还可以轻松修改替换RegEx以使用不同的文件.

return gulp.src(...)
  .pipe(replace(/<link href="([^\.]\.css)"[^>]*>/g, function(s, filename) {
      var style = fs.readFileSync(filename, 'utf8');
      return '<style>\n' + style + '\n</style>';
  }))
  .pipe(gulp.dest(...));
Run Code Online (Sandbox Code Playgroud)

  • 您的第二个正则表达式只匹配一个符号命名的css文件.你应该这样纠正:`/ <link href ="([^ \.] + \.css)"[^>]*>/g` (4认同)