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

大口看和无妖冲突

公西修文
2023-03-14

简而言之:最近开始使用Gulp(从Grunt转换),我正在尝试将Gulp的默认监视任务(不是npm的Gulp watch)用于SASS/JS/HTML和Gulp nodemon(来自npm)在发生更改时重新启动Express server。当只运行吞下手表时,它工作正常;当运行gulp服务器(对于nodemon)时,效果很好。然而,同时使用两者(如下面默认任务的配置中所示),手表功能不起作用。任务正在运行,在CLI上,gulp显示监视任务的“开始”和“完成”,但文件不会更新。

相关任务配置:

Concat javascript:

    gulp.task('js:app', function(){
        return gulp.src([
            pathSource('js/application/modules/**/*.js'),
            pathSource('js/application/_main.js')
        ])
        .pipe(concat('application.js'))
        .pipe(gulp.dest('./build/assets/js')).on('error', utils.log);
    });

Nodemon,更改express app后重新启动:

    gulp.task('express', function(){
        return nodemon({script:'server.js', ext:'js', cwd: __dirname + '/express', legacyWatch: true})
        .on('restart', function(){
            //gulp.run('watch'); // doesn't work :(
        });
});

观看javascript更改,并运行js: app进行修改。

    gulp.task('watch', function(){
      gulp.watch(pathSource('js/application/**/*.js'), ['js:app']);
    });

默认任务,同时初始化gulp watch和nodemon:

    gulp.task('default', ['watch', 'express']);

如果有人有任何想法,请提前感谢!

共有2个答案

缪风史
2023-03-14

FWIW,似乎在gulp nodemon的配置上使用cwd参数实际上会将整个gulp cwd设置到该目录。这意味着未来的任务将在错误的目录中执行。

当我在我的前端服务器上运行Gulp watch任务时,我遇到了这个问题,同时在我的后端服务器(在同一个Gulpfile中)上运行no清新任务时,有一个竞争条件,如果首先执行no清新命令,前端的东西实际上会构建到(Home)/后端/前端而不是(Home)/前端,并且一切都会从那里变成珍珠形状。

我发现在gulp nodemon上使用watch和script参数可以解决这个问题(尽管看起来nodemon仍然在监视我的整个项目的变化,而不是构建的后端目录)。

陈实
2023-03-14

gulp.run调用已被弃用,所以我会尝试一种不同的方法。既然您已经在使用Gulp,我可以建议您尝试一下Gulp-nozo吗?

根据gulp nodemon文档,您可以向其传递一系列要执行的任务:

更新:这是完整的gulpfile。js文件,以及github上的一个工作示例。

'use strict';

// Main dependencies and plugins
var gulp = require('gulp');
var jshint = require('gulp-jshint');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');
var nodemon = require('gulp-nodemon');

var assets = 'assets/js/**/*.js';
var publicDir = 'public/javascripts';

// Lint Task
gulp.task('lint', function () {
  return gulp.src(assets)
    .pipe(jshint())
    .pipe(jshint.reporter('jshint-stylish'));
});

// Concatenate and minify all JS files
gulp.task('scripts', function () {
  return gulp.src(assets)
    .pipe(concat('global.js'))
    .pipe(gulp.dest(publicDir))
    .pipe(rename('global.min.js'))
    .pipe(uglify())
    .pipe(gulp.dest(publicDir));
});

// Watch Files For Changes
gulp.task('watch', function () {
  gulp.watch(assets, ['lint', 'scripts']);
});

gulp.task('demon', function () {
  nodemon({
    script: 'server.js',
    ext: 'js',
    env: {
      'NODE_ENV': 'development'
    }
  })
    .on('start', ['watch'])
    .on('change', ['watch'])
    .on('restart', function () {
      console.log('restarted!');
    });
});

// Default Task
gulp.task('default', ['demon']);

这样,你可以在nodemon启动时生成watch任务,并确保每当nodemon重新启动你的应用程序时,watch任务都会再次触发。

编辑: <罢工> 看来你应该打电话给- 更改 事件,该事件将处理编译任务 在 重新启动事件触发器。

编辑:似乎没有恶魔的on('change',回调)从他们的API中删除

 类似资料:
  • 我有两门课叫口袋妖怪。java和Move。java,其中包含创建和修改口袋妖怪及其移动的方法。我已经创建了所有必需的方法,但我在攻击方法上遇到了问题,攻击方法应该是在对手受到攻击时减去对手的生命值。 以下是口袋妖怪的代码。java类: 这是搬家的代码。java类: 最后,这里是口袋妖怪的代码。java,我在这里测试这些方法:

  • 忘记vanilla sass测试,回到这里的gulp sass问题-在我的gulpfile中,我在运行递归复制任务之前运行gulp sass任务,所以如果它工作,那么应该应用并复制sass更改。至少我是这么想的。 下面是显示相关文件的dir结构: 在gulpfile.js中,有两个文件映射对象可以很好地用于src/assets/的递归副本。但是为了测试gulp-ruby-sass任务,我对SASS

  • 问题内容: 我讨厌 distutils (我猜他是做这件事的 罪魁祸首)的 一件事是它改变了shebang线。换句话说,更理性和环境变量决定的经文 神奇地转化为 在grok中也可以看到这一点:我在virtualenv中使用grokproject启动了我的项目,但是现在我再也无法移动开发目录了,因为它将绝对路径放在了shebang指令中。 我问这个的原因是双重的 我想移动它,因为我开始在一个目录(实

  • 问题内容: 我有一个简单的从Erlang到Golang的端口示例,将数据从Erlang传递到Golang并回显响应。 问题是我可以传输的数据量似乎限制为2 ^ 8字节(请参见下文)。我认为问题可能出在Golang端(没有创建足够大的缓冲区),但是用bufio.NewReaderSize替换bufio.NewReader无效。因此,我现在认为问题可能出在Erlang一方。 我该怎么做才能增加缓冲区大

  • 我在启动服务时遇到端口冲突,而配置服务已经在运行。我目前用的是Spring Boot 1.2.3.RELEASE和Spring Cloud版本1.0.0.RELEASE(试过用1.0.1.RELEASE,同样问题)。 如果我在端口8888中启动配置服务器,然后尝试启动另一个服务,它会尝试在端口8888中启动,即使我已经指定了另一个端口。奇怪的是,这不会发生在Mac OS中,它确实会发生在Windo