私は、テンプレートから改訂されたソースを挿入してfile.html.tplというHTMLを作成しています。Gulp:テンプレートからHTMLを作成して挿入する
だから私は、次のいcss.html.tplあります
<!-- common:css -->
<!-- endinject -->
<!-- vendor:css -->
<!-- endinject -->
<!-- custom:css -->
<!-- endinject -->
と.html.tplファイルの同期は、その後、.htmlをでテンプレートを作成することを読んで、この機能を使用します
exports.createHTMLfromTemplate = function (distDir, templateFileNames) {
for(var i = 0; i < templateFileNames.length; i++) {
var file = templateFileNames[i];
var tplData = fs.readFileSync(path.join(__dirname, file));
var distPath = path.join(distDir, file.slice(0, -4)); // remove .tpl
fs.writeFile(distPath, tplData, function (err) {
if (err) log(exports.error(err));
});
}
};
し、我々はinjecするそれらのコメントと準備 .htmlファイルを持っている必要がありますtを実行すると、改訂されたファイルが挿入されます。
gulp.task('inject-js', function() {
var distPath = path.join(__dirname, paths.baseSrc)
helper.createHTMLfromTemplate(distPath, 'js.html.tpl')
var injected = gulp.src(distPath + 'js.html');
_.each(jsTasks, function (task) {
var injector = task.filename.substr(0, task.filename.length - 3);
var gulpSrc = gulp.src(task.paths.dest + injector + '*.js', {read: false});
injected
.pipe($gulp.inject(gulpSrc, {name: injector}))
});
return injected
.pipe(gulp.dest(paths.baseSrc))
.on('error', helper.handleError);
});
js.htmlでの結果は以下の通りです:
<!-- common:css -->
<link rel="stylesheet" href="/static/dist/common-fee68d20.css">
<!-- endinject -->
<!-- vendor:css -->
<link rel="stylesheet" href="/static/dist/vendor-7cd25cb9.css">
<!-- endinject -->
<!-- custom:css -->
<!-- endinject -->
あなたが見ることができるように、私はベイグラント(VM)の内部で、この一口を実行した場合、それは、いくつかのコメントに注入しないであろうバガスの外で走っているとき、例えば局所麻を使用して、適切に注入する。
なぜですか? :)
なぜgulp-injectは迷惑な環境で部分的にしか動作しないのですか? –
@WilmerSaint、はい、ローカル(VM外)で正常に動作します – Novitoll
VMはUbuntu上にあります。私のローカルOSはWindows 7です - 問題の場合... – Novitoll