2

grunt を使用して concat スクリプトを作成する必要があります。ここに私のボイラープレートがあります:

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

イベントとハンドラーフォルダーで同じ名前のファイルを連結し、連結された個々のペアをdist/ventsディレクトリに配置するように、連結タスクに指示するにはどうすればよいですか?

4

1 に答える 1

0

同様の問題がありました。特定のパスパターンで同じファイル名のファイルが検出された場合、ビルドが失敗するようにしたかったのです。カスタムタスクを書くことで解決しました。grunt.file.expand または grunt.file.recurse GruntAPIを使用できます

多分これはあなたを助けるでしょう(これはjsではなくcoffeescriptです)。

  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}' ]
于 2013-12-18T15:42:00.687 に答える