whole_func_string: function installDevelopmentWatcher (startingFolder, callback) {
    const buildFolder = config.commands.build.output
  
    // BrowserSync will watch for changes in the assets CSS.
    // It will also create a server with the build folder and the assets.
    bs.init({
      server: [buildFolder, assets],
      port: config.commands.build.port,
      files: path.join(assets, '**/*.css'),
      ui: false,
      open: false
    })
  
    // Meanwhile, the watcher will monitor changes in the templates
    // and the data files.
    // Then, when a change occurs, it will regenerate the site through
    // the provide callback.
    const templateFolder = path.join(assets, '**/*.html')
    const dataFolder = path.join(startingFolder, '**/data.xml')
  
    const watcher = createWatcher(templateFolder, dataFolder)
  
    watcher.on('change', () => {
      callback()
      bs.reload()
    })
  }
func_code_string: function installDevelopmentWatcher (startingFolder, callback) {
    const buildFolder = config.commands.build.output
  
    // BrowserSync will watch for changes in the assets CSS.
    // It will also create a server with the build folder and the assets.
    bs.init({
      server: [buildFolder, assets],
      port: config.commands.build.port,
      files: path.join(assets, '**/*.css'),
      ui: false,
      open: false
    })
  
    // Meanwhile, the watcher will monitor changes in the templates
    // and the data files.
    // Then, when a change occurs, it will regenerate the site through
    // the provide callback.
    const templateFolder = path.join(assets, '**/*.html')
    const dataFolder = path.join(startingFolder, '**/data.xml')
  
    const watcher = createWatcher(templateFolder, dataFolder)
  
    watcher.on('change', () => {
      callback()
      bs.reload()
    })
  }
func_documentation_string: Complex watcher to develop the CSS and templates of this project. Will check the data files, the templates AND the CSS.