node.js - 将 JS 注入到具有匹配文件名的 HTML 页面中
问题描述
我希望能够.js
使用相同的文件名将文件注入到 HTML 页面中gulp-inject
(即,index.min.js
被注入index.html
,data.min.js
被注入data.html
)。我将缩小的文件存储在build/js
其中,并且.html
位于src/
. 我试过这个:
src('src/*.html')
.pipe(inject(src('build/js/*.min.js'), {
starttag: '<!-- inject:{{path}} -->',
relative: true
}))
.pipe(dest('build/'));
await Promise.resolve('Javascript injected.');
这是运行时的终端输出gulp
:
[23:17:24] Starting 'injectJS'...
[23:17:24] Finished 'injectJS' after 19 ms
[23:17:24] gulp-inject Nothing to inject into data.html.
[23:17:25] gulp-inject Nothing to inject into index.html.
index.html
具有关联的开始和结束标签的文件:
<!-- inject:index.min.js -->
<!-- endinject -->
这可以单独使用gulp-inject
,还是我需要其他软件包?
解决方案
我设法让它工作。问题是通过relative: true
在选项中使用../build/js/
,实际文件名前面包含的文件路径,通过使用ignorePath: '../build/js'
删除额外的路径信息解决了这个问题。最后,inject
调用看起来像这样:
inject(src('build/js/*.min.js', { read: false }), {
removeTags: true,
starttag: '<!-- inject:{{path}} -->',
relative: true,
ignorePath: '../build/js',
transform: (path) => {
return '<script src="js/' + path + '"></script>';
}
})
推荐阅读
- jquery - 使用 addEventListener 加载元数据计算视频的总时间并将其保存在全局变量中以在 setinterval 中使用
- xamarin - 如何摆脱 Xamarin.Android 中的两个应用程序图标?
- react-native - 本机模块不能为空
- fullscreen - Uno 平台中非 UWP 应用程序头的全屏模式
- javascript - 为什么我尝试克隆对象没有按预期工作?
- yugabyte-db - 在 YugabyteDB 中,当一个节点发生故障时,故障节点上的 tablet 负载是否均匀分布在其他节点之间?
- python - 命令引发异常:AttributeError: 'Context' object has no attribute 'members'
- node.js - 如何使用 Node.Js 在 MongoDB 中插入或更新数组?
- python - 切片一个nd数组的中间
- javascript - AngularJS:自定义组件不会显示(吐司)