2016년 5월 2일 월요일

Grunt


Grunt
| The JavaScript Task Runner
프로젝트 자동화를 도와주는 패키지 관리자
  -> 프로젝트 관련 내용을 모두 모니터함

Grunt (그런트) 공식 사이트: http://gruntjs.com/
참고 사이트:

<순서>
0. Node.js 와 Grunt 설치
1. 프로젝트 폴더에 package.json과 Gruntfile.js 생성 (같은 곳에 있어야함)
  - package.js 생성방법 1. 직접 만들기, 2. 커맨드라인에서 npm init 사용하기
2. package.json 설정 + 모듈 추가
  - 플러그인 설정 (html, css, javascript, watch 등)
3.Gruntfile.js 설정

< package.json 생성하기 - 1. 파일만들기 >
- package.json 파일은 npm 으로 퍼블리싱할때 사용하는 메타데이터 저장 파일로 모듈에 대한 내용과 프로젝트 환경설정 내용이 있음

실행(윈도우키+R) > cmd 에서
1. 프로젝트 폴더로 이동
  - 명령어: cd 프로젝트 폴더명
    e.g. cd C:\wamp\www\wordpressandsass 

2. 프로젝트 폴더 안에 package.json 만들기
  - 명령어: npm init > 엔터 > package.json 내용 설정 부분이 나옴
    e.g. npm init > 엔터 >
    name: (wordpressandsass) <엔터>
    version: (1.0.0) <엔터>
    description: grunt testing <입력 후 엔터>
    entry point: (Gruntfile.js) index.html <입력 후 엔터>
    test command:<엔터>
    git repository:<엔터>
    keywords:<엔터>
    author: Julyee <입력 후 엔터>
    license: (ISC) <엔터>
    About to write to C:\wamp\www\wordpressandsass\package.json:
    {
      "name": "wordpressandsass",
      "version": "0.0.0",
      "description": "grunt testing",
      "main": "index.html",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "Julyee",
      "license": "BSD"
    }
    Is this ok? (yes) <엔터>

3. package.json 내용 수정 
  - 방법: 에디터에서 프로젝트 폴더에 생성된 package.json파일을 열어서
  scripts부분, license 부분과 마지막 (,)삭제한 후 저장


< package.json 생성하기 - 2. 모듈 추가하기 >
추가할 모듈
1. sass 모듈 
2. watch 모듈

실행(윈도우키+R) > cmd 에서

1. package.json 파일에 SASS 모듈 추가하기
  - scss 폴더로 이동 > npm install grunt-contrib-sass --save-dev > 엔터

2. package.json 파일에 watch 모듈 추가하기
  - scss 폴더로 이동 > npm install grunt-contrib-watch --save-dev > 엔터


결과:
    - 프로젝트 폴더안에 node_modules 폴더가 생기고
     그 안에 grunt, grunt-contrib-sass, grunt-contrib-watch 폴더가 생성됨
    - package.json 으로 가보면 아래 코드가 자동 삽입되어있음
      "devDependencies": {
        "grunt": "~1.0.1",
        "grunt-contrib-sass": "~1.0.0"
        "grunt-contrib-watch": "~1.0.0"
      }

< Gruntfile.js 설정하기 >
- Gruntfile.js는 grunt가 할일을 지시하는 파일로 할일을 적어주면 됨.
1. 프로젝트 폴더안에 Gruntfile.js 파일생성
  - Gruntfile.js 의 기본 구조
    module.exports = function(grunt) {
      // 프로젝트 환경설정.
      grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        // 모듈(플러그인)설정
      });
      // 플러그인 로드
      // Task 실행
    };


2. 설치한 모듈(플러그인)에 대한 내용을 확인 후 알맞은 옵션으로 설정한다.
  e.g. Sass 와 Watch 설정하기

    module.exports = function(grunt) {
      // 프로젝트 환경설정.
      grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        /* Sass */
        sass: {
          dev:{
            options: {
              style: 'expanded', //사람이 읽을수 있게 해라
              sourcemap: 'none', // map 없게
            },
            files: {
              'style.css': 'scss/style.scss' //dev가 정상이면, style.css로 컴파일됨
            }
          }
        },
        /* Watch */
        watch: {
          css:{
            files: '**/*.scss', //프로젝트 폴더안에 확장자가 .scss 파일을 전부
            tasks: ['sass']   // 위의 sass: 부분을 실행한다.
          }
        }
      });
      // 플러그인 로드
      grunt.loadNpmTasks('grunt-contrib-sass');
      grunt.loadNpmTasks('grunt-contrib-sass');

      // Task 실행 
      grunt.registerTask('default',['watch']); //sass task는 watch 안에 있으므로 생략
    };

< Grunt 실행하기 >
실행(윈도우키+R) > cmd > scss폴더로 이동 > grunt > 엔터
- watch가 실행되고 > .css-cache 폴더가 생성됨
- watch 종료 방법: Ctrl+C > y

컴파일하기: 에디터에서 SCSS 폴더에 넣어둔 _style.scss파일을 수정하면, 자동적으로 grunt가 컴파일한 후 style.css를 만들어준다.
 
< Grunt 종료하기 >
Ctrl+C > y

Sass

Sass (Syntactically Awesome Stylesheets)

Sass is a scripting language that is interpreted into CSS(Cascading Style Sheets).

참고 사이트
Sass 공식 사이트: http://sass-lang.com/
생활코딩: https://opentutorials.org/course/470/2489

준비과정:
1. ruby 설치 (Windows인 경우만) https://www.ruby-lang.org/en/downloads/
2. Sass 다운로드 & 설치
  - window에서 실행 -> cmd -> gem install sass 입력 후 엔터
  *루비가 잘 설치 되었는지 확인방법:
  실행(윈도우키+R) > cmd > ruby -v > 엔터 > 버전정보가 나오면 잘 설치한것

 *루비 update 방법
 커맨드라인에서 gem install rubygems-update

< SCSS 파일 만들기 >
사용방법 - 새로만들기
실행(윈도우키+R) > cmd > cd 프로젝트 폴더명
1. sass에 사용하겠다고 알리면, 변경사항을 자동으로 컴파일해줌
  (폴더연결) sass --watch .:.
  or
  (파일연결) sass --watch 파일명.scss:파일명.css

2. 파일 생성
  1번과 같은 위치에 '파일명.scss' 을 만들어준다.

3. 끝내기 (Ctrl+c)


< CSS로 변환하기 >
사용방법 - CSS로 한번에 모두 변환하고 원하는 폴더로 이동시키기
-폴더명에 있는 sass파일을 css로 모두 변환하고, 폴더명의 하위폴더인 complied로 이동해라
  sass --watch 폴더명/sass:폴더명/compiled


* CSS로 변환시, 표기 방법 4가지 *
1. nested
- 기본값이며, --style nested 생략 가능.
  sass 파일명.scss:파일명.css --style nested

2. expanded
- 계층구조이지만, 앞에 빈칸이 없음
  sass 파일명.scss:파일명.css --style expanded

3. compact
- 선택자의 기준으로 줄바꿈이 됨
  sass 파일명.scss:파일명.css --style compact

4. compressed
- 공백모두 제거 됨
sass 파일명.scss:파일명:css --style compressed

* sourceMappingURL=파일명.css.map 주석 달지 않게 하려면,
맨뒤에 --sourcemap=none 붙여주면됨


사용방법 - 기존css를 sass로 변경하기
1.Css 2 sass/scss converter 사이트로 접속(http://css2sass.herokuapp.com/)

2. css붙여넣기 -> convert 2 scss 클릭 (scss - css3 용, sass - 이전버전용)


기본 문법 (syntax): 

> 주석 처리 <
/* 여러줄 */
//한줄


jQuery - noConflict()

noConflict()

이 메소드는 jQuery의 선언자인 $ 를 사용자 정의로 바꿀수 있음.
사용 예: 만약 2가지 버전의 jQuery를 사용할때, 겹치지 않게 하기 위함

공식사이트 참고: https://api.jquery.com/jquery.noconflict/

예제 참고 사이트: http://blog.naver.com/makand123/30168779056