         return unless worker {changeFileList, compilers, linters, fileList, @config}
 
       bindWatcherEvents @config, fileList, compilers, linters, watcher, reload, @_startCompilation
-      fileList.on 'ready', => compile @_endCompilation() if @_start
+      watcherReady = false
+      watcher.once 'ready', -> watcherReady = true
+      fileList.on 'ready', => compile @_endCompilation(), watcherReady if @_start
       # Emit `change` event for each file that is included with plugins.
       # Wish it worked like `watcher.add includes`.
       includes.forEach (path) =>

# startTime  - Number. Timestamp of a moment when compilation started.
#
# Returns Function.
getCompileFn = (config, joinConfig, fileList, optimizers, watcher, callback) -> (startTime) ->
  assetErrors = fileList.getAssetErrors()
  if assetErrors?
    assetErrors.forEach (error) -> logger.error error

        logger.error error
    else
      logger.info generateCompilationLog startTime, fileList.assets, generatedFiles, disposed
      # pass `fs_utils.GeneratedFile` instances to callbacks.
      callback generatedFiles

    return unless watcherReady

    # If it’s single non-continuous build, close file watcher and
    # exit process with correct exit code.
