module.exports = function (grunt) {
  // 프로젝트 설정
  grunt.initConfig({
    pkg: grunt.file.readJSON("package.json"),

    // 1. 코드 문법 검사 설정
    jshint: {
      files: ["Gruntfile.js", "app.js", "test/**/*.js"],
      options: {
        node: true,
        esversion: 8,
      },
    },

    // 2. 파일 변경 감지 설정
    watch: {
      files: ["<%= jshint.files %>"],
      tasks: ["jshint"],
    },

    // 3. 서버 실행 설정
    nodemon: {
      dev: {
        script: "bin/www",
      },
    },

    // 4. 동시 실행 설정 (서버 실행 + 파일 감시)
    concurrent: {
      dev: {
        tasks: ["nodemon", "watch"],
        options: {
          logConcurrentOutput: true,
        },
      },
    },
  });

  // 플러그인 로드
  grunt.loadNpmTasks("grunt-contrib-jshint");
  grunt.loadNpmTasks("grunt-contrib-watch");
  grunt.loadNpmTasks("grunt-nodemon");
  grunt.loadNpmTasks("grunt-concurrent");

  // 기본 작업 등록 (터미널에서 'grunt'만 쳤을 때 실행될 작업)
  grunt.registerTask("default", ["jshint", "concurrent"]);
};
