【问题标题】:Grunt or gulp with netbeans and upload on save使用 netbeans 咕哝或吞咽并在保存时上传
【发布时间】:2025-12-02 19:00:02
【问题描述】:

我已经使用 netbeans 很长时间了。我主要使用 php、html、css 和 javascript,主要与 wordpress 主题和插件开发有关。我在 Windows 7 下运行 Netbeans 8.0.2(并用于测试 gulp 最新的夜间版本)。

我刚刚开始使用 grunt 和/或 gulp(目前倾向于后者),目前正在利用 autoprefixer - 但我看到了这些系统的一百万个其他潜在好处。

不过,有一个引人注目的地方。几年前我沉迷于“保存时上传文件”功能,我不打算改掉这个习惯 - 即时上传是我几乎所有项目工作流程的核心部分......

到目前为止,它只是默默地处理了我扔给它的任何东西,并自动上传任何更改的文件,无论我使用 netbeans、photoshop、windows explorer 还是任何其他外部程序来修改或移动文件……但它没有不能很好地使用最近引入的 gulp 和 grunt 支持。

如果我运行 gulp(或 grunt)任务并更新了文件,netbeans 不会检测到更改,直到打开更改的文件(或者如果已经打开,则使用选项卡)......因此更新的文件不是已上传。

如果任务作为手表运行,我是从 CLI 还是从 netbeans 运行它似乎并不重要。如果这是一个“正常”任务(即不是手表 - 我对术语不太熟悉),我通过右键单击 Gruntfile.js -> Grunt Tasks -> whatever 手动运行它然后检测到更改...但这不是很方便(与我通常推送CTRL+S 的“部署过程”相比)。到目前为止,这种运行任务的内置方式适用于 grunt - 但不适用于(还没有?)gulp。

我看到的唯一选择是:

  • 为 grunt 或 gulp 使用 FTP 插件 - 出于多种原因非常不受欢迎
  • 在服务器端运行 gulp - 这意味着当无法完全控制服务器时,正常工作流程会严重中断,这在外部项目中经常出现 - 这也意味着需要大量额外的初始工作即使可能,也要设置每个新项目服务器端

有没有人设法让它在类似的情况下工作?

-如果我只是完全错误地处理它,也欢迎任何其他建议/指针。

或多或少(基于我目前有限的知识)要复制的文件:

package.json:

{
  "name": "grunt_gulp_test",
  "version": "0.0.1",
  "description": "",
  "main": "gulpfile.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Mikkel",
  "license": "ISC",
  "devDependencies": {
    "grunt": "^0.4.5",
    "grunt-contrib-sass": "^0.9.2",
    "grunt-contrib-watch": "^0.6.1",
    "gulp": "^3.8.11",
    "gulp-autoprefixer": "^2.3.0",
    "gulp-load-plugins": "^0.10.0",
    "gulp-sass": "^2.0.1",
    "gulp-sourcemaps": "^1.5.2",
    "gulp-util": "^3.0.4"
  }
}

Gruntfile.js:

module.exports = function(grunt) {
    grunt.initConfig({
        sass: {                              // Task
            dist: {                            // Target
                options: {                       // Target options
                    style: 'expanded'
                },
                files: {                         // Dictionary of files
                    'test_grunt.css': 'test.scss'
                }
            }
        },
        watch: {
            scripts: {
                files: ['test.scss'],
                tasks: ['sass'],
                options: {
                    spawn: false
                }
            }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-sass');
    grunt.loadNpmTasks('grunt-contrib-watch');

    grunt.registerTask('default', ['sass']);
    grunt.registerTask('watch_it', ['sass', 'watch']);
};

gulpfile.js:

'use strict';

var gulp = require('gulp');
var gutil = require( 'gulp-util' );
var $ = require('gulp-load-plugins')();

gulp.task('styles', function () {
  return gulp.src([
    'test.scss'
  ])
    .pipe($.sourcemaps.init())
    .pipe($.sass({
      precision: 10,
      onError: console.error.bind(console, 'Sass error:')
    }))
    .pipe($.autoprefixer({browsers: ['> 5%']}))
    .pipe($.sourcemaps.write())
    .pipe(gulp.dest('.'));
});

gulp.task('default', ['styles']);

gulp.task('watch', ['styles'], function () {
  gulp.watch(['test.scss'], ['styles']);
});

test.css:

div {
    div {
        display: flex;
        background: #445552;
    }
}

【问题讨论】:

  • 我已在 netbeans.org 错误跟踪器上提交了错误报告。如果您遇到同样的问题,请投票、订阅并添加任何其他详细信息,以帮助加快解决问题的速度:bug 252782

标签: node.js netbeans upload gruntjs gulp


【解决方案1】:

已确认这是在 Windows 上运行的用户的错误。

The bug 已解决,在它包含在稳定版本中之前,任何受此问题影响的人都可以简单地使用nightly build >= 201508060002

【讨论】: