Как да откриете еднакви имена на файлове в различни папки, докато използвате Grunt?

Трябва да напиша concat скрипт, използвайки grunt. ето моят модел:

___js
|____dist
| |____vents
| | |____carousel.js
| | |____compare.js
| | |____style.js
|____src
| |____events
| | |____carousel.js
| | |____compare.js
| | |____styles.js
| |____handlers
| | |____carousel.js
| | |____compare.js
| | |____style.js

Как мога да кажа на concat task, да concat файловете, които имат едно и също име в папката за събития и манипулатори и да поставя всяка отделна свързана двойка в директорията dist/vents?


person Iman Mohamadi    schedule 20.11.2013    source източник
comment
comment
И аз имам нужда от това, някакви новини?   -  person borkie    schedule 17.10.2014


Отговори (1)


Имах подобен проблем: исках компилацията ми да се провали, ако има файлове със същите имена на файлове, открити в даден модел на път. Реших го, като написах персонализирана задача. Можете да използвате grunt.file.expand или grunt.file.recurse GruntAPI

Може би това ще ви помогне (това е coffeescript, а не js).

  grunt.registerMultiTask "noduplicates", "Detects duplicated filenames", () ->
    path = require('path')

    dupFilenamesCounted = {}
    haveDuplicates = false

    options =
      cwd: this.data.cwd

    grunt.file.expand(options, this.data.src).forEach (filepath) ->
      filepathParts = filepath.split(path.sep)
      filename = filepathParts.slice(-1).join(path.sep)

      unless dupFilenamesCounted[filename] is undefined
        dupFilenamesCounted[filename].counter++
        dupFilenamesCounted[filename].filepaths.push(filepath)
      else
        dupFilenamesCounted[filename] = { counter: 0, filepaths: [ filepath ] }

    for filename of dupFilenamesCounted
      if dupFilenamesCounted[filename].counter > 0
        grunt.log.error "Filename: " + filename + ' has ' + dupFilenamesCounted[filename].counter + ' duplicates: ' + dupFilenamesCounted[filename].filepaths
        haveDuplicates = true

    # Fail by returning false if this task had errors
    return false if haveDuplicates

След това определяте задачата си:

noduplicates:
  images:
    cwd: '<%= pkg.src %>'
    src: [ 'static/**/*.{gif,png,jpg,jpeg}' ]
person b1r3k    schedule 18.12.2013