gulp パイプラインを構築しようとしています。CSS を挿入してindex.html
(これは正常に動作します)、ソースから他のすべてのリンクを取得しindex.html
て、出力されたバージョンでそれらを置き換えたいと考えています。
置換するテンプレート化されたセクションにHTML コメントが含まれている場合useref
、呼び出しが出力をマングリングしていることに気付きました(以下の行の例を参照してください)。コードで示すのが最も簡単です:COMMENT
index.html
(ソースファイル)
<!-- build:css styles/app.css-->
<!--COMMENT-->
<link rel="stylesheet" href="/.tmp/styles.css">
<!-- endbuild -->
gulpfile.js
仕事
gulp.task('optimizeReplace', function () {
var assets = $.useref.assets({ searchPath: './' });
return gulp
.src('./src/client/index.html')
.pipe(assets)
.pipe(assets.restore())
.pipe($.useref()) //THIS IS THE PROBLEM LINE; IF INJECT IS NOT RUN FIRST IT IS MANGLED
.pipe(gulp.dest('./wwwroot/'));
});
出力 ( index.html
)
</style>
<link rel="stylesheet" href="styles/lib.css">
<link rel="stylesheet" href="styles/app.css-->" <!--COMMENT>
</head>
<body>
<div>
問題は HTML の方が見やすいのですが、COMMENT
HTML コメントはタグの末尾半分が失われているため、それ以降はすべてコメントと見なされます。
置換セクション内にコメントを入れたい理由は、そのコメントが実際にはgulp-injectステートメントであり、useref
. 問題の原因となっている単純な HTML コメントに単純化しました。
これは問題を引き起こす行です:.pipe($.useref())
参考までに、 Pluralsightに関する John Papa のコースに従っています。彼はこの正確なメカニズムを使用して CSS を挿入し、それらを置き換えます – ( inject:css
HTML コメント区切り文字は の後に壊れていますuseref
):
<!-- build:css styles/app.css-->
<!-- inject:css -->
<link rel="stylesheet" href="/.tmp/styles.css">
<!-- endinject -->
<!-- endbuild -->
useref()
テンプレートを正しいリンクに置き換え、 HTML コメントはそのままにしておくにはどうすればよいですか?
ありがとう。