私はGet the current file name in gulp.src()を読みました。それは私がやろうとしていることに近づいているようですが、助けが必要です。Gulp Streamで現在のファイル名を取得
はgulpfile.js
に次の関数を考えてみましょう:
function inline() {
return gulp.src('dist/**/*.html')
.pipe($.if(PRODUCTION, inliner('dist/css/app.css')))
.pipe(gulp.dest('dist'));
}
そしてinliner()
、(もgulpfile
に)徹底的する:
function inliner(css) {
var css = fs.readFileSync(css).toString();
var mqCss = siphon(css);
var pipe = lazypipe()
.pipe($.inlineCss, {
applyStyleTags: false,
removeStyleTags: false,
removeLinkTags: false
})
.pipe($.replace, '<!-- <style> -->', `<style>${mqCss}</style>`);
return pipe();
}
これらの機能は、外部CSSファイルを取り、にそれらをインライン化電子メールのそれぞれのHTML。
私は本当にはこのような何かを行う方法を知りたい:
function inline() {
return gulp.src('dist/**/*.html')
.pipe($.if(PRODUCTION, inliner('dist/css/' + file.name + '.css')))
.pipe(gulp.dest('dist'));
}
をそして、あなたは、自分自身を頼むかもしれない「なぜ?」まあ、私はただ1つのCSSファイルを持っていません。 app.css
のすべてがインライン化された場合、実際に必要だったより多くのスタイルが適用されます。
だから私は、インライン化したい:
email1.css ---- to -------> email1.html
email2.css ---- to -------> email2.html
email3.css ---- to -------> email3.html
のように。基本的には、Gulpストリームでその時点で処理中のHTMLファイルの名前を取得し、変数として保存してからinliner('dist/css/' + file.name + '.css')
ビットに渡したいとします。私はGulp知識のすべてのビットを使い果たし、完全に、そしてまったく空白になってきました。
うわー。ありがとうございました!それは素晴らしい仕事でした! – ethfun