Gulp:从模板创建HTML并注入

Gulp:从模板创建HTML并注入,gulp,vagrant,Gulp,Vagrant,我创建HTMLs是为了从模板中注入经过修改的源代码,如file.html.tpl 所以我有css.html.tpl,它有以下内容: <!-- common:css --> <!-- endinject --> <!-- vendor:css --> <!-- endinject --> <!-- custom:css --> <!-- endinject --> <!-- common:css --> &l

我创建HTMLs是为了从模板中注入经过修改的源代码,如file.html.tpl

所以我有css.html.tpl,它有以下内容:

<!-- common:css -->
<!-- endinject -->

<!-- vendor:css -->
<!-- endinject -->

<!-- custom:css -->
<!-- endinject -->
<!-- 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 -->
js.html中的结果如下:

<!-- common:css -->
<!-- endinject -->

<!-- vendor:css -->
<!-- endinject -->

<!-- custom:css -->
<!-- endinject -->
<!-- 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 -->

如您所见,如果我在Vagrant(VM)内部运行此gulp,它将不会注入一些注释,当在Vagrant外部运行时,例如使用本地gulp,它将正确注入

为什么?:)

充分披露:我没有用过流浪汉

也许我们可以缩小范围。在给定的全局路径上工作,并且:

获取源文件流,将每个文件转换为字符串,然后 将每个转换后的字符串注入到目标流中的占位符中 档案

如果没有进行注入,那么我的第一个想法是它没有找到需要注入的文件

尝试使用类似的方法,看看需要注入的文件是否真正进入管道流

如果在Vagrant环境中,您是从源代码管理获取文件,而不是映射到与本地开发环境相同的路径,那么它应该可以工作。否则,路径可能无法解析到正确的目录

令人费解的是,它确实有效,但只是部分有效。如果不是路径问题,并且您使用的是reved文件,那么负责生成
的任务可能就是罪魁祸首。这会更有意义

编辑


gulp inject的注释:

注:自gulp inject v4.0.0起,需要NodeJS v4或更高版本。使用 gulp inject针对旧版本的节点安装特定版本:npm 安装吸管-inject@3.


我没有理由认为这可能是问题所在,但为了以防万一,请交叉检查本地和虚拟机环境中的节点版本号。

您是否在问为什么gulp inject在一个不稳定的环境中只能部分工作?@WilmerSaint,是的,在本地(虚拟机之外)中,它可以像Ubuntu上的expectedVM一样工作,我的本地操作系统是Windows7——如果有关系的话……我添加了一个答案,因为它太长了,无法发表评论,但它不是一个真正的答案。只是一些故障排除步骤。谢谢。我昨天解决了这个问题。我曾经在每个循环中运行gulp任务(使用concat、uglify、rev)。然后为每个人调用相同的gulp inject。因此,我决定将任务拆分为单独的gulp.task,而不是针对每个任务执行它们,这样就成功了。但现在它们是大量的复制粘贴,但现在对我来说还可以。看起来,这就是你所说的关于乙烯基路径的事情。对于gulpdebug,+1,它给了我一个很好的提示。