当前位置: 首页 > 知识库问答 >
问题:

Concat脚本按顺序吞咽

苏鹏鹍
2023-03-14

比如说,您正在主干上构建一个项目,需要按特定顺序加载脚本,例如下划线。js需要在主干之前加载。js

我怎样才能让它在脚本中保持有序?

// JS concat, strip debugging and minify
gulp.task('scripts', function() {
    gulp.src(['./source/js/*.js', './source/js/**/*.js'])
    .pipe(concat('script.js'))
    .pipe(stripDebug())
    .pipe(uglify())
    .pipe(gulp.dest('./build/js/'));
});

我的源代码/索引中的脚本顺序正确。html,但由于文件是按字母顺序组织的,gulp将显示下划线。js在主干之后。js,以及我的源代码/索引中脚本的顺序。html不重要,它查看目录中的文件。

有人对此有想法吗?

我最好的主意是用123重命名供应商脚本,以给他们正确的顺序,但我不确定我是否喜欢这样。

随着我了解的越来越多,我发现布朗瑟夫是一个很好的解决方案,起初可能会很痛苦,但它很棒。

共有3个答案

彭炳
2023-03-14

我使用过gulp order插件,但它并不总是成功的,正如我的stack overflow post gulp order node模块和合并流所示。在浏览Gulp文档时,我遇到了streamque模块,它在我的案例中非常适合指定连接顺序。https://github.com/gulpjs/gulp/blob/master/docs/recipes/using-multiple-sources-in-one-task.md

下面是我如何使用它的示例

var gulp         = require('gulp');
var concat       = require('gulp-concat');
var handleErrors = require('../util/handleErrors');
var streamqueue  = require('streamqueue');

gulp.task('scripts', function() {
    return streamqueue({ objectMode: true },
        gulp.src('./public/angular/config/*.js'),
        gulp.src('./public/angular/services/**/*.js'),
        gulp.src('./public/angular/modules/**/*.js'),
        gulp.src('./public/angular/primitives/**/*.js'),
        gulp.src('./public/js/**/*.js')
    )
        .pipe(concat('app.js'))
        .pipe(gulp.dest('./public/build/js'))
        .on('error', handleErrors);
});
狄旭
2023-03-14

如果您需要一些文件位于文件块之后,另一个有帮助的方法是从glob中排除特定文件,如下所示:

[
  '/src/**/!(foobar)*.js', // all files that end in .js EXCEPT foobar*.js
  '/src/js/foobar.js',
]

您可以将此与指定需要优先处理的文件结合起来,如查德·约翰逊的回答所述。

王豪
2023-03-14

我最近在构建AngularJS应用程序时遇到了与Grunt类似的问题。这是我发布的一个问题。

我最后做的是在grunt配置中按顺序显式列出文件。配置文件将如下所示:

[
  '/path/to/app.js',
  '/path/to/mymodule/mymodule.js',
  '/path/to/mymodule/mymodule/*.js'
]

Grunt能够找出哪些文件是重复的,而不包括它们。同样的技术也适用于Gulp。

 类似资料:
  • 问题内容: 我正在尝试使用jQuery动态加载一些脚本: 但是有时加载脚本的顺序会发生变化。前一个脚本成功加载后,如何加载每个脚本? 问题答案: 您可以通过使用回调函数作为递归函数调用在前一个完成加载后加载每个。 在您的代码中发生的是,脚本是同时被请求的,并且由于它们是异步加载的,因此它们以随机顺序返回并执行。 我尚未对此进行测试,但是如果脚本是在本地托管的,则可以尝试以纯文本格式检索它们,然后将

  • 假设我有 我可以运行什么NPM命令来让所有这些脚本按顺序启动。当我使用前/后修复时,它们会顺序启动,但不会等到父脚本完成后才执行。我假设唯一的解决方案是这样的:当在async.series助手函数中触发shell命令时,我如何让Gulp任务依次触发??我知道这可以用古普来完成,但我现在想坚持使用NPM来探索它的能力。感谢任何帮助!

  • 问题内容: 假设我有 我可以运行什么NPM命令以使所有这些脚本按顺序启动。当我使用前/后修复时,它们顺序启动,但是它们不等待父脚本完成才执行。我假设唯一的解决方案是:在async.series辅助函数中触发shell命令时,如何使Gulp任务依次触发??我知道可以使用Gulp做到这一点,但我现在想坚持使用NPM来探索其功能。谢谢你的帮助! 问题答案: 通过npm run调用这些脚本,并用双“&”号

  • 使用统一的控制脚本来初始化其他脚本 我们先设置一个 Game.js 脚本作为总的控制脚本,还有另外的 Player.js、Enemy.js、Menu.js 三个脚本,那么它们的初始化过程如下: // Game.js const Player = require('Player'); const Enemy = require('Enemy'); const Menu = require('Men

  • 在elasticsearch 1.5.0中,我尝试使用scripted\u metric结果对聚合桶进行排序/排序,但收到以下错误: AggregationExecutionException[无效的术语聚合顺序路径[自定义脚本]。术语桶只能在子聚合器路径上排序,该路径由路径中的零个或多个单桶聚合和路径端的最终单桶或度量聚合组成 有什么办法可以解决这个问题吗? 我的查询如下:

  • 本文向大家介绍Unity3D中脚本的执行顺序和编译顺序,包括了Unity3D中脚本的执行顺序和编译顺序的使用技巧和注意事项,需要的朋友参考一下 事件函数的执行顺序 先说一下执行顺序吧。 官方给出的脚本中事件函数的执行顺序如下图: 我们可以做一个小实验来测试一下: 在Hierarchy视图中创建三个游戏对象,在Project视图中创建三条脚本,如下图所示,然后按照顺序将脚本绑定到对应的游戏对象上: