html - 使用模块 bundler 引用 html 中的内置文件

标签 html gulp build-system

我正在使用 Gulp 为我的静态网站构建我的 SCSS、Pug 和 ES6 Assets 。我知道可以对文件名进行哈希处理并将文件输出到不同的目录中。

对于我的具体例子:

  • 我的 Pug markdown 位于 ~/src/pages 目录中,并被构建到 ~/public/ 目录中。
  • 我的 SCSS 样式表位于 ~/src/stylesheets 目录中。这些正在构建并获取 ~/public/style 目录

我的问题是,当我从 Pug 引用我的样式表文件时,我必须像这样引用已经构建的文件夹:

link(rel='stylesheet', href='./style/example.css')

对于我的 IDE,这没有意义,因为 ~/src/pages 目录中不存在 style 目录。

我发现最有用的是我可以引用我的样式表,如下例所示:

link(rel='stylesheet', href='../stylesheets/example.scss')

有什么办法可以做到这一点,还是我完全走错了方向?如果没有,我在哪里寻找?

最佳答案

使文件名像hash的解决方法

  • gulp,用于自动化我们的任务
  • gulp-rev ,用于使用随机哈希重命名我们的文件。
  • gulp-rev-collector ,用于通过我们文件中的散列引用切换非散列引用。
  • rev-del ,用于删除/dist 文件夹中的非散列文件。

示例代码:

gulp文件.js

gulp.task("revision:rename", ["serve"], () =>
  gulp.src(["dist/**/*.html",
            "dist/**/*.css",
            "dist/**/*.js",
            "dist/**/*.{jpg,png,jpeg,gif,svg}"])
  .pipe(rev())
  .pipe(revdel())
  .pipe(gulp.dest("dist"))
  .pipe(rev.manifest({ path: "manifest.json" }))
  .pipe(gulp.dest("dist"))
);

list .json

{
  style.css: style-ds9udjvci.css,
  main.js: main-dijds9xc9.min.js
}

用于在文件中创建我们的修订更新 将 manifest.json 的每个键的每个引用重写为每个 html/json/css/js 文件中的相应值 (i.e: <link href="style.css"> would become <link href="style-ds9udjvci.css">)

gulp.task("revision:updateReferences", ["serve", "revision:rename"], () =>
  gulp.src(["dist/manifest.json","dist/**/*.{html,json,css,js}"])
 .pipe(collect())
 .pipe(gulp.dest("dist"))
);

关于html - 使用模块 bundler 引用 html 中的内置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54695009/

相关文章:

javascript - 表 rowspan 与 ngFor Angular 6

javascript - 动态字段 JS 值显示 "undefined"

javascript - Node.js/Gulp - 循环遍历 Gulp 任务

gulp - FontAwesome url 路径

gradle - Bazel 适合移动+桌面项目吗?

javascript - 如何更换&#8364;用javascript转换成欧元?

php - 如何在 jQuery 中将多个类应用于多个 Div

javascript - 我怎样才能丑化选定的JS?

build - Autotools、Cmake 和 Scons 之间有什么区别?

yocto - oe_runmake 在 yocto 中的作用是什么?