我正在尝试构建一个gulp管道 - 我想在我的index.html
中注入一些CSS(这很好)然后从源index.html
获取所有其他链接并在输出中替换它们版本
我注意到useref
调用正在修改输出,如果要替换的模板化部分包含 HTML注释(请参阅下面的示例,了解行{{ 1}})。用代码演示最简单:
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
问题在HTML中更容易看到,但</style>
<link rel="stylesheet" href="styles/lib.css">
<link rel="stylesheet" href="styles/app.css-->" <!--COMMENT>
</head>
<body>
<div>
HTML注释会丢失其标记的结尾部分,因此其后的所有内容都认为它是注释。
我想在替换部分中添加注释的原因是注释实际上是gulp-inject语句,在我执行COMMENT
之前注入了一些其他引用。我将其简化为导致问题的简单HTML注释。
这是导致问题的一行:useref
仅供参考我跟随John Papa’s course on Pluralsight,他使用这个确切的机制来注入一些CSS然后替换它们 - (.pipe($.useref())
HTML注释分隔符在inject:css
之后被破坏了):
useref
如何让<!-- build:css styles/app.css-->
<!-- inject:css -->
<link rel="stylesheet" href="/.tmp/styles.css">
<!-- endinject -->
<!-- endbuild -->
使用正确的链接替换模板,但保持HTML注释不变?
感谢。
答案 0 :(得分:1)
原因是版本更改检查文档https://www.npmjs.com/package/gulp-useref 这里有一个例子:
gulp.task('optimize', ['templateCache', 'images'], function(){ var templateCache = config.temp + config.templateCache.files; return gulp .src(config.index) .pipe($.plumber()) .pipe($.inject(gulp.src(templateCache, {read: false}, {starttag: ''}))) .pipe($.useref({ searchPath: './' })) .pipe(gulp.dest(config.build)); });
希望有所帮助
答案 1 :(得分:0)
评论被删除但有例外。保留IE条件注释,以便您可以在那里发出请求或写一个拉取请求,看看它是否被接受。这是回购:
答案 2 :(得分:0)
您可以尝试使用node-useref而不是gulp-useref来保存IE条件注释
<!-- build:js scripts/combined.js -->
<!--[if lt IE 9]>
<script type="text/javascript" src="scripts/this.js"></script>
<script type="text/javascript" src="scripts/that.js"></script>
<![endif]-->
<!-- endbuild -->
结果将是
<!--[if lt IE 9]>
<script src="scripts/combined.js"></script>
<![endif]-->
或者尝试将您的评论从您的建筑代码中删除:
<!--COMMENT-->
<!-- build:css styles/app.css-->
<link rel="stylesheet" href="/.tmp/styles.css">
<!-- endbuild -->