【问题标题】:Gulp- Versioning for javascript filesGulp- javascript 文件的版本控制
【发布时间】:2019-01-15 16:34:54
【问题描述】:

我正在对 javascript 文件进行捆绑和缩小。我正在使用 gulp 执行此操作。现在我希望如果我对我的任何文件进行任何更改并点击 gulp 然后它会生成一个新的捆绑和缩小文件,其版本号如下:

<script src="https://cdn.test.com/bundle-1.0.0-min.js/"></script>

然后

<script src="https://cdn.test.com/bundle-1.0.1-min.js/"></script>

我想使用 gulp 执行此操作,因为我已经将 gulp 用于其他目的。还有一件事,如果这是可能的,那么有什么方法可以让我每次进行更改时都不在我的 html 页面中指定版本号,并且我的 html 页面以某种方式自行获取最新版本。

【问题讨论】:

  • 对不起,我没明白你的意思。 package.json 包含我项目的所有 npm 依赖项,那么我应该阅读哪个版本?
  • 我做了这个回答。我希望这能解决你的问题。 @问

标签: javascript jquery node.js npm gulp


【解决方案1】:

这只是一般文件的重命名。但这实际上不应该是增加版本号的自动化任务。否则你会很快得到像1.0.2092 这样没有帮助的版本。我建议从package.json 中读取版本并将其用作文件名。如果您已经使用过gulp,应该很容易。

如果您不想使用您的package.json 的全局版本(version 条目),您可以为您的捆绑版本添加一个自己的条目。甚至使用与package.json 不同的文件。您甚至可以将其用作应捆绑文件的配置,以便将所有内容放在一个地方:

{
  "bundle": {
      "version": "1.0.1",
      "files": [
        "path/to/file-one.js",
        "another/file.js",
        "..."
      ]
  }
}

只是一个简单的例子:

var pkg = require("./package.json");
var gulp = require("gulp");
var rename = require("gulp-rename");

gulp.src(pkg.bundle.files)
    .concat("bundle.js")
    .pipe(uglify())
    .pipe(rename(function(path) {
        path.extname = "-" . pkg.bundle.version + "-min" + path.extname;
    }))
    .pipe(gulp.dest("./"));

注意:您可以设置 concat 名称,而不是 rename,但我喜欢拆分它。但只是为了完整:

.concat("bundle-" + pkg.bundle.version + "-min.js")

关于问题的第二部分,替换文件中的内容:

如果您也构建您的 html 页面,并将相关路径替换/注入其中,这将是可能的。您可以再次使用package.json 的版本来构建和替换它。或使用gulp-inject 之类的工具。这个简单的工具可以将jscss 文件添加到您的html 模板中。只需在 html 文件中创建一个应该放置它们的区域,例如:&lt;!-- inject:js --&gt;&lt;!-- endinject --&gt;。之后也是一个简单的gulp taks:

var pkg = require("./package.json");
var gulp = require("gulp");
var inject = require("gulp-inject");

gulp.src("dev/index.html")
    .pipe(inject("bundle-" + pkg.bundle.version + "-min.js"))
    .pipe(gulp.dest("prod/"));

【讨论】:

  • 感谢您的回答,但是 package.json 版本如何以及何时更新?
  • 如何:在您选择的文本编辑器中打开文件。 时间: 每当您对该文件进行合理更改时。好吧,开个小玩笑。 ;) 正如我在回答中试图告诉你的那样,版本的增加和更改只能手动完成。所以每当你想增加那个版本时,你自己做,然后运行 ​​gulp 任务来重建一切。 @问
  • @elsbehr,这就是问题所在,我无法手动完成。由于一些限制,我希望一切都自动化。
  • 那么有没有像 1.0、1.1、1.2 一样自动执行的 gulp npm。它将达到 1.1000 并不重要,因为我必须在蓝月亮中进行一次更改,但我无法手动更改
  • 您不能在项目的某些文件中增加版本?为什么?如果你不能手动完成,脚本应该如何自动完成?即使那样,我也不建议您通过自动化任务来实现它,因为这样做是一个非常糟糕的主意。但是请告诉我更多关于你的问题,为什么你不能手动做,为什么你甚至想增加版本呢?也许我对你有另一个想法。 @问
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
  • 2019-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多