gpt4 book ai didi

javascript - 为什么 gulp-useref 似乎不适用于替换部分中的注释?

转载 作者:IT王子 更新时间:2023-10-29 03:12:51 27 4
gpt4 key购买 nike

我正在尝试构建一个 gulp 管道——我想将一些 CSS 注入(inject)到我的 index.html 中(这工作正常),然后从源 index.html 中获取所有其他链接 并在输出版本中替换它们。

我注意到 useref 如果要替换的模板化部分包含HTML 注释(请参见下面的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在我执行 userref 之前注入(inject)一些其他引用的语句。我将其简化为导致问题的简单 HTML 注释。

这是导致问题的行:.pipe($.useref())

仅供引用,我正在关注 John Papa’s course on Pluralsight他使用这种机制来注入(inject)一些 CSS,然后替换它们——(inject:css HTML 注释定界符在 useref 之后被破坏):

<!-- build:css styles/app.css-->
<!-- inject:css -->
<link rel="stylesheet" href="/.tmp/styles.css">
<!-- endinject -->
<!-- endbuild -->

如何让 useref() 用正确的链接替换模板,保持 HTML 注释不变?

谢谢。

最佳答案

原因是版本变更检查文档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));});

希望对你有帮助

关于javascript - 为什么 gulp-useref 似乎不适用于替换部分中的注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29945216/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com