gulp-scss-lint icon indicating copy to clipboard operation
gulp-scss-lint copied to clipboard

Temp files causing ENOENT errors

Open deepfriedmind opened this issue 9 years ago • 8 comments

While my watch task is active and the scss-lint task is run, I sporadically get errors like the following:

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: ENOENT, open '/path/to/some/filename_scsslint_tmp4101218392592792874.scss'
    at Error (native)

I suspect it's because I'm also running the scss-lint plugin for PhpStorm (so I can catch issues even before saving), and that it creates these temp files.

I've excluded them from the src in the Gulp task, using gulp-ignore, like so:

gulp.task('scss-lint', function() {

    return gulp.src('src/styles/**/*.scss')
        .pipe($.ignore.exclude('**/*_scsslint_tmp*.scss'))
        .pipe($.scssLint())
});

...and have confirmed with gulp-debug that the temp files aren't piped to scss-lint – yet I still get these errors from time to time. I haven't found a way to consistently reproduce the error unfortunately. Any ideas?

deepfriedmind avatar Jun 17 '15 12:06 deepfriedmind

that's very weird... try to add the verbose options and see what prints..

have you tried this?

gulp.task('scss-lint', function() {
    return gulp.src(['src/styles/**/*.scss', '!**/*_scsslint_tmp*.scss'])
        .pipe($.scssLint())
});

juanfran avatar Jun 18 '15 15:06 juanfran

I've been experiencing a similar issue...

I use a similar glob to reference my source in the following task:

gulp.task('styles', ['lint:sass'], function() {
    return gulp.src(config.styles.src)
        .pipe(...
}

and have the same glob registered for a watch to trigger my styles task:

gulp.watch(config.styles.src, ['styles']);

This should work such that whenever I change a file, the lint:sass task is run, followed by the styles task; however, whenever I change a file, I see the following output:

[13:21:41] Starting 'lint:sass'...
[13:21:41] gulp-debug: app/modules/header/header-component_scsslint_tmp9067563165859372843.scss
[13:21:41] gulp-debug: 1 items
[13:21:41] gulp-notify: [Compile Error] Input file did not exist or was not readable
[13:21:41] Finished 'lint:sass' after 246 ms
[13:21:41] Starting 'styles'...
[13:21:41] Starting 'lint:sass'...
[13:21:41] gulp-debug: app/modules/header/header-component.scss
[13:21:41] gulp-debug: 1 items
[13:21:42] Finished 'lint:sass' after 1.08 s
[BS] Reloading Browsers...
[13:21:43] Finished 'styles' after 2.29 s

As you can see, there is an additional execution of the lint:sass task somehow, with header-component_scsslint_tmp9067563165859372843.scss included in the stream.

SpenceDiNicolantonio avatar Sep 19 '15 17:09 SpenceDiNicolantonio

I've managed to work around the issue by extending gulp.watch to add an exclusion to the passed glob:

var EXCLUDE_GLOB = '!!(node_modules)/**/*_scsslint_tmp*';    // !(node_modules) for performance

var gulp_watch = gulp.watch;
    gulp.watch = function() {
        var src = arguments[0];

        src = _.isString(src) ? [src] : src;
        if (!_.contains(src, EXCLUDE_GLOB)) {
            src.push(EXCLUDE_GLOB);
        }

        arguments[0] = src;
        return gulp_watch.apply(gulp, arguments);
    };

The result is the following, as expected:

[13:45:36] Starting 'lint:sass'...
[13:45:36] gulp-debug: app/modules/header/header-component.scss
[13:45:36] gulp-debug: 1 items
[13:45:37] Finished 'lint:sass' after 406 ms
[13:45:37] Starting 'styles'...
[BS] Reloading Browsers...
[13:45:39] Finished 'styles' after 2.51 s

SpenceDiNicolantonio avatar Sep 20 '15 03:09 SpenceDiNicolantonio

thanks @SpenceDiNicolantonio !

juanfran avatar Sep 20 '15 11:09 juanfran

@juanfran, I assume these temp files are generated by scss-lint itself and not by gulp-scss-lint. Can you confirm? If this is the case, I'll submit a bug to the scss-lint project. I think these files should be generated in the system's temp folder.

SpenceDiNicolantonio avatar Sep 20 '15 12:09 SpenceDiNicolantonio

that's it, gulp-scss-lint doesn't create any tmp file

juanfran avatar Sep 20 '15 12:09 juanfran

I think it could be an IDE problem, I use PHPStorm (newest version) and get these weird tmp files for my js files. Yes .jsnot .scss...

It's horrible it creates those tmp files inside source dir, and scsslint for js files does not make any sense...

tasks/docs-scripts_scsslint_tmp1537225672253761620.js tasks/scripts-bundle_scsslint_tmp4377624646903046346.js

AndyOGo avatar Sep 16 '16 07:09 AndyOGo

I created an issue at the scss-lint inteliJ plugin https://github.com/idok/scss-lint-plugin/issues/45

AndyOGo avatar Sep 16 '16 08:09 AndyOGo