web-dev-qa-db-fra.com

Grunt.js, Avertissement: impossible d'écrire le fichier "src" (code d'erreur: EISDIR)

J'ai une Gruntfile écrite dans CoffeeScript et je continue à recevoir un (Error code: EISDIR) lorsque la tâche cssmin est exécutée. Après avoir exécuté la tâche en mode commenté, j'obtiens ces informations:

Running "cssmin" task

Running "cssmin:src" (cssmin) task
Verifying property cssmin.src exists in config...OK
Files: assets/z.styles.concat.css.liquid -> src
Options: report=false
Reading assets/z.styles.concat.css.liquid...OK
Writing src...ERROR
Warning: Unable to write "src" file (Error code: EISDIR). Use --force to continue.

Voici ma tâche cssmin:

 cssmin: 
        src: 'assets/z.styles.concat.css.liquid'
        dest: 'assets/styles.min.css.liquid'

Le z.styles.concat.css.liquid est créé après l'exécution de concat et est correctement transmis au dossier des actifs. Le chemin indiqué dans l'attribut src est correct.

Une idée de ce qui pourrait être jeter l'erreur?

En outre, voici le fichier grunt complet pour connivence.

Grunt.coffee:

module.exports = (grunt) ->

# Project configuration.
  grunt.initConfig
    pkg: grunt.file.readJSON 'package.json'

    files:
      grunt:     ['gruntfile.js']
      css:       ['assets/screen.css', 'assets/styles.css.liquid']
      scss:      ['src/scss/**/*.scss']
      js:        ['src/js/**/*.js'] #(if we need liquid templating), 'src/js/**/*.js.liquid', 'assets/**/*.js.liquid']
      coffee:    ['src/js/coffee/**/*.coffee', 'src/js/coffee/**/*.coffee.liquid']
      img:       ['src/images/**/*.{png,jpeg,svg,jpg,gif}']

# Image Processing
    smushit:
      path:  
        src: '<%= files.img %>'  #recursively replace minified images
        dest: 'assets'

# Concatenation Processing
    concat: 
      css: 
        src: ['<%= files.css %>']
        dest: 'assets/z.styles.concat.css.liquid'     

      js: 
        src: ['<%= files.js %>']
        dest: 'src/js/z.scripts.concat.js'


# JavaScript Processing
    coffee:
          app:
            expand: true
            cwd: 'src/js/coffee'
            src: ['**/*.coffee', '**/*.coffee.liquid']
            dest: 'src/js'
            ext: '.js'

    uglify: 
      dist: 
        src: ['src/js/z.scripts.concat.js']
        dest: 'assets/scripts.min.js'

    jshint: 
      files: ['<%= files.grunt %>', 'src/js/z.scripts.concat.js']

      options: 
        jquery: true
        smarttabs: true
        curly: true
        eqeqeq: true
        immed: true
        latedef: true
        newcap: true
        noarg: true
        sub: true
        undef: true
        boss: true
        eqnull: true
        browser: true

      globals: 
        jQuery: true
        console: true
        undef: true
        unused: false



# CSS Processing
    compass: 
      dist: 
        options: 
          sassDir: 'src/scss'
          cssDir: 'assets'
          imagesDir: 'assets',
          javascriptsDir: 'assets',
          outputStyle: 'expanded'   

    cssmin: 
        src: 'assets/z.styles.concat.css.liquid'
        dest: 'assets/styles.min.css.liquid'


# watch tasks
    watch:
      options:
        nospawn: true
        events: ['changed', 'added']
      files: [
                '<%= files.js %>'
                '<%= files.coffee %>'
                '<%= files.scss %>'
            ]
      tasks: ['default']

  # These plugins provide necessary tasks.
  grunt.loadNpmTasks 'grunt-contrib-coffee'
  grunt.loadNpmTasks 'grunt-contrib-watch'
  grunt.loadNpmTasks 'grunt-contrib-concat'
  grunt.loadNpmTasks 'grunt-contrib-jshint'
  grunt.loadNpmTasks 'grunt-contrib-uglify'
  grunt.loadNpmTasks 'grunt-contrib-cssmin'
  grunt.loadNpmTasks 'grunt-smushit'
  grunt.loadNpmTasks 'grunt-contrib-compass'

# Default task.
  grunt.registerTask 'default', [
                      'coffee'
                      'concat:js'
                      'jshint'
                      'uglify'
                      'concat:css',
                      'cssmin'
                    ]

   # Minify task

   # Run the default task then losslessly minify images with Yahoo!'s Smush-It

  grunt.registerTask 'minify', ['default', 'smushit']
13
agconti

Dans votre sortie, Grunt tente d'exécuter la tâche cssmin:src, puis tente d'écrire dans le fichier source. Cela ne peut pas être le résultat souhaité?

Vous devez spécifier un nom pour la tâche cssmin car il s'agit d'une tâche multitâche. Voir Documentation Grunt pour plus d'informations.

Changez votre configuration de grunt en

cssmin:
    minify:
        src: 'assets/z.styles.concat.css.liquid'
        dest: 'assets/styles.min.css.liquid'
10
thomaux

En utilisant NodeJS 4.2.2 et Grunt 0.4.5,

J'ai euEISDIRerreur d'écriture lorsque le nom du fichier compilé était nommé comme en tant qu'un répertoire existant. Ils étaient tous deux dans le même niveau hiérarchique. Renommer a résolu le problème.

3
sampoh

Il semble que src pointe vers le répertoire. Essayez d'ajouter/** à la fin du chemin.

assets/z.styles.concat.css.liquid/**

0
Andrew Shustariov