Javascript 不含Gulpfile.js的Gulp

Javascript 不含Gulpfile.js的Gulp,javascript,gulp,Javascript,Gulp,我继承了一个狼吞虎咽的项目 我应该把GulpV3迁移到v4 但是,我在这个项目中根本找不到gulpfile.js。 然而,每个教程都需要一个。我假设有一些设置,最后一个开发人员知道哪些可能已经过时了 以下是我的文件夹结构: 所有任务都在“任务”文件夹中分组。我想说,这些与根文件一起导出的文件实际上运行这些任务文件是我的“gulpfiles” 所有的gulp任务都是使用:node-platform/build.js或node-platform/deploy.js 我可以对这一切进行更改,我看到他

我继承了一个狼吞虎咽的项目

我应该把GulpV3迁移到v4

但是,我在这个项目中根本找不到
gulpfile.js
。 然而,每个教程都需要一个。我假设有一些设置,最后一个开发人员知道哪些可能已经过时了

以下是我的文件夹结构:

所有任务都在“任务”文件夹中分组。我想说,这些与根文件一起导出的文件实际上运行这些任务文件是我的“gulpfiles”

所有的gulp任务都是使用:
node-platform/build.js
node-platform/deploy.js

我可以对这一切进行更改,我看到他如何称呼它并编写任务。但我不知道他用什么样的模式来实现这一点,所以很难知道从哪里开始迁移到GulpV4

我们正在使用的Gulp库:

"gulp": "3.9.1",
"gulp-autoprefixer": "6.0.0",
"gulp-bundle-assets": "2.29.0",
"gulp-concat": "2.6.1",
"gulp-csso": "3.0.1",
"gulp-data": "1.3.1",
"gulp-ejs": "3.3.0",
"gulp-empty": "0.1.2",
"gulp-eslint": "5.0.0",
"gulp-htmlmin": "5.0.1",
"gulp-if": "2.0.2",
"gulp-imagemin": "5.0.3",
"gulp-rename": "1.4.0",
"gulp-replace": "1.0.0",
"gulp-rimraf": "0.2.2",
"gulp-sass": "3.2.1",
"gulp-sass-lint": "1.4.0",
"gulp-sourcemaps": "2.6.5",
"gulp-string-replace": "1.1.2",
"gulp-strip-comments": "2.5.2",
"gulp-webserver": "0.9.1",
如何运行Gulptask:

// STEP 1 - process.env.NODE_ENV to staging
(!process.env.NODE_ENV) && (process.env.NODE_ENV = 'staging');


// STEP 2 - Prevent from running on NON-CI
if (!process.env.CI) {
  throw new Error('Build can only be performed in CI Environment');
}


// START PROCESS
const _ = require('lodash'),
  gulp = require('gulp'),
  Tasks = require('./tasks'),
  runSequence = require('run-sequence').use(gulp),
  // This of the tasks here is the order in which they will executed
  taskMap = {
    'clean:dist': Tasks.cleanDist,
    'clean:tmp': Tasks.cleanTemp,
    'copy:assets': Tasks.assetCopy,
    'bundle': Tasks.bundleAssets,
    'transpile': Tasks.transpile,
    'prefixCss': Tasks.autoprefixCss,
    'sitemap': Tasks.sitemap,
    'robots': Tasks.robots,
    'remove:htmlext': Tasks.removeHtmlExt
  };

// Create all tasks
_.forEach(taskMap, (value, key) => {
  gulp.task(key, value);
});

// @todo: Shift to using gulp.series when gulp is upgraded to v4
gulp.series(..._.keys(taskMap))();

不久前,我继承了一个使用Gulp但没有gulpfile的项目。原来它实际上是在一个共享的gulpfile中,这个gulpfile托管在npm上(比如)。很简单,但可能它在
package.json

中被列为一个依赖项
gulpfile
实际上只是一段Javascript代码-它是用默认名称命名的,所以当您运行
gulp
时,它会默认找到它

实际上,您有GulpFile—它们都是您正在谈论的那些独立的
.js
文件


我怀疑它们是这样分开的,因为有人认为每个任务中有太多的任务,并希望以某种方式通过“主题”将它们分开。

我猜build.js只是用gulpfile标志调用gulp:gulp builtask--gulpfile tasks/index.js,这就是为什么没有gulpfile.js。您可能可以将所有内容迁移到gulp4,只要其他地方没有定义任务,所有内容都会很好。我将在其中共享代码,以便您可以看到它是如何运行的。不确定他选择了哪种模式,可能只是将gulp任务与其他逻辑分离。似乎所有函数都是在tasks文件夹中定义的,在build.js中,您正在从导入的函数创建任务。不确定它们是如何运行的,我猜是运行顺序。您可以保持函数在任务文件夹中的原样,看起来它们是原子的,只需创建自己的管道——它们应该如何使用gulp series/parallel而不是使用taskMap对象运行。package.json中是否定义了“脚本”?如果是这样,他可以使用
gulp-f build.js
来使用build.js而不是gulpfile.js。他可能用脚本写了一个命令。请注意,我假设tasks文件夹中的所有函数都只是返回gulp streams的函数,但它们可能仍然使用运行序列,这在gulp4中是不必要的,或者没有返回streams/callbacking,因此应该重构它们。此外,似乎所有任务都是串联运行的,因此管道也可能会得到优化。这也是我的想法。但答案如下:——这就是我想在改变之前问的原因。非常感谢。我想这并不是将吞咽任务分割成单独文件的推荐方法-请参阅。如果您使用链接版本,您可能只需要执行
gulp build
而不是
node platform/build.js
,但这两个版本都可以工作,因此这取决于您。这就是我在将这些内容推到生产环境之前提出问题的原因,而不仅仅是假设。我在我们的依赖关系中看不到这一点,我相信他只是因为尺寸而将其拆分,但这很好,非常感谢。