Grunt 압축, js / css 파일 통합

24324 단어 전단
Grunt 소개
Grunt 는 명령 에 기반 한 javascript 프로젝트 명령 행 구축 도구 입 니 다.1. 홈 페이지:http://gruntjs.com/ 2. 중국어 사이트:http://www.gruntjs.net/ 개발 전단 에 html, css, js 세 가지 만 있 습 니 다. 다른 프로 그래 밍 언어 와 달리 많은 모듈, 여러 가지 유형 을 관리 해 야 합 니 다. 왜 구축 도 구 를 사용 합 니까?서버 에 코드 를 올 릴 때 우 리 는 파일 이 가장 적 고 불 러 오 는 속도 가 빠 르 기 를 바 랄 것 입 니 다. 우리 가 쓴 css / js 파일 에는 대량의 빈 칸 이 있 습 니 다. 이 빈 칸 들 은 똑 같이 공간 을 차지 합 니 다. 이 쓸모없는 빈 칸 을 생략 하면 파일 마다 핵 심 만 있 는 코드 입 니 다. 파일 마다 몇 Kb 의 크기 를 절약 하 더 라 도.수천 만, 심지어 더 많은 사용자 가 방문 할 때 서버 에 많은 스트레스 를 줄 일 수 있다.마찬가지 로 한 항목 의 css / js 파일 이 많 으 면 더 많은 자원 을 절약 할 수 있 습 니 다.홈 페이지 에는 빌 드 도 구 를 사용 하 는 이유 와 Grunt 를 사용 하 는 이유 가 홈 페이지 에 올 라 와 있 습 니 다.
왜 구축 도 구 를 사용 합 니까?
자동화반복 되 는 작업, 예 를 들 어 압축 (minification), 컴 파일, 유닛 테스트, linting 등 자동화 도 구 는 당신 의 노동 을 줄 이 고 업 무 를 간소화 할 수 있 습 니 다.Gruntfile 파일 에 작업 을 올 바 르 게 설정 하면 작업 실행 기 는 대부분의 지루 한 작업 을 자동 으로 도와 줍 니 다.
Grunt 를 왜 사용 합 니까?
Grunt 생태 계 는 매우 방대 하고 계속 증가 하고 있다.선택 할 수 있 는 수많은 플러그 인 을 가지 고 있 기 때문에 Grunt 를 이용 하여 어떤 일 을 자동 으로 완성 하고 최소한 의 대 가 를 치 를 수 있 습 니 다.필요 한 플러그 인 을 찾 지 못 하면 Grunt 플러그 인 을 직접 만 들 고 npm 에 발표 할 수 있 습 니 다.
설치
Grunt 에 따라 0.8 버 전 이상 의 node. js 와 npm, node 를 설치 한 후 npm 도 구 를 추가 합 니 다.node 와 npm 버 전 보기:
~ node -v
v6.0.0
~ npm -v
3.9.6

Grunt 설치:
➜  ~ sudo npm install -g grunt-cli
Password:
/usr/local/bin/grunt -> /usr/local/lib/node_modules/grunt-cli/bin/grunt
/usr/local/lib
└── grunt-cli@1.2.0 

이 때 터미널 에서 grunt 명령 을 실행 하면 오류 가 발생 합 니 다.
➜  ~ grunt      
A valid Gruntfile could not be found. Please see the getting started guide for
more information on how to configure grunt: http://gruntjs.com/getting-started
Fatal error: Unable to find Gruntfile.

설치 에 실패 했다 고 착각 하지 마 십시오. grunt -help 출력 grunt 도움말 명령 은 설치 에 성공 했다 는 것 을 설명 합 니 다.grunt 를 어떻게 사용 하 는 지 소개 합 니 다.
3. 항목 초기 화
우선 빈 폴 더 를 새로 만 듭 니 다:
mkdir grunttest
cd grunttest 

그리고 npm init 돌아 오 는 차 는 기본 값 으로 설정 합 니 다.
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install  --save` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
name: (grunttest) 
version: (1.0.0) 
description: 
entry point: (index.js) 
test command: 
git repository: 
keywords: 
author: 
license: (ISC) 
About to write to /Users/yp/Desktop/grunttest/package.json:

{
  "name": "grunttest",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}


Is this ok? (yes) 

현재 grunttest 디 렉 터 리 에 package. json 파일 이 생 성 되 었 습 니 다. 내용 은 다음 과 같 습 니 다.
{
  "name": "grunttest",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

grunt 를 사용 하려 면 grunt 를 이 항목 에 설치 하고 명령 을 실행 해 야 합 니 다.
sudo npm install grunt --save-dev

실행 완료 후 이 디 렉 터 리 에 node 생 성modules 폴 더, 폴 더 에 저 장 된 일 grunt 의존 패키지.그리고 빈 Grunt. js 파일 을 새로 만 듭 니 다.현재 프로젝트 디 렉 터 리 구 조 는 다음 과 같 습 니 다.
|--grunttest
|--|--package.json
|--|--node_modules
|--|--Gruntfile.js

현재 초기 화 항목 이 완료 되 었 습 니 다. grunt 명령 을 실행 합 니 다.
➜  grunttest grunt
Warning: Task "default" not found. Use --force to continue.

Aborted due to warnings.

기본 task 를 찾 을 수 없습니다. grunt 의 작업 은 Gruntfile. js 파일 에 적 혀 있 습 니 다. 예 를 들 어 압축 파일 은 task 이 고 파일 을 합 친 것 은 task 입 니 다.
압축, 통합 js
프로젝트 디 렉 터 리 에 빈 폴 더 js, css, build, dest 를 새로 만 들 고 각각 js 파일 2 개 와 css 파일 2 개 를 넣 어 테스트 합 니 다. 현재 프로젝트 디 렉 터 리:
|--grunttest
|--|--build
|--|--dest
|--|--js
|--|----index.js
|--|----main.js
|--|--css
|--|----index.css
|--|----style.css
|--|--node_modules
|--|--Gruntfile.js
|--|--package.json

홈 페이지 [grunt 작업 설정] 문서 참조 (http://www.gruntjs.net/configuring-tasks). js 작업 을 압축 하고 통합 합 니 다. Gruntfile. js 에 추 가 됩 니 다.
module.exports = function(grunt) {
    pkg: grunt.file.readJSON('package.json'),
    grunt.initConfig({
        uglify: {
            //    uglify       
            options: {
                banner: '/*!create by yaopan yyyy-mm-dd")%>*/
'
}, static_mappings: { files: [{ src: 'js/index.js', dest: 'build/index.min.js' }, { src: 'js/main.js', dest: 'build/main.min.js' }], } }, concat: { bar: { src: ["build/*.js"], dest: 'dest/all.min.js', }, }, }); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.registerTask('default', ['uglify', 'concat']); }

이 때 grunt 명령 을 실행 하면 의존 할 패 키 지 를 설치 하 라 고 알려 줍 니 다. 설치 grunt-contrib-uglify
sudo npm install grunt-contrib-uglify --save-dev 

설치 grunt-contrib-concat
sudo npm install grunt-contrib-concat --save-dev

작업 수행:
➜  grunttest grunt
Running "uglify:static_mappings" (uglify) task
File build/index.min.js created: 1.49 kB → 899 B
File build/main.min.js created: 767 B → 469 B
>> 2 files created.

Running "concat:bar" (concat) task

Done.

build 폴 더 를 열 면 압축, 합 친 js 파일 을 볼 수 있 습 니 다 Grunt压缩、合并js/css文件_第1张图片
압축, 통합 css
Gruntfile. js 에 작업 추가:
module.exports = function(grunt) {
    pkg: grunt.file.readJSON('package.json'),
    grunt.initConfig({
        uglify: {
            //    uglify       
            options: {
                banner: '/*!create by yaopan */
'
}, static_mappings: { files: [{ src: 'js/index.js', dest: 'build/index.min.js' }, { src: 'js/main.js', dest: 'build/main.min.js' }], } }, concat: { bar: { src: ["build/*.js"], dest: 'dest/all.min.js', }, css: { src: ["build/*.min.css"], dest: 'dest/all.min.css' } }, cssmin: { target: { files: [{ expand: true, cwd: 'css/', src: ['*.css', '!*.min.css'], dest: 'build', ext: '.min.css' }] } }, }); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.registerTask('default', ['uglify', 'concat','cssmin']); }

watch 퀘 스 트
watch 는 파일 의 변경 을 실시 간 으로 감시 할 수 있 습 니 다. css / js 파일 이 변경 되 었 을 때 grunt 를 자동 으로 압축 하여 합 칠 수 있 습 니 다.
module.exports = function(grunt) {
    pkg: grunt.file.readJSON('package.json'),
    grunt.initConfig({
        uglify: {
            //    uglify       
            options: {
                banner: '/*!create by yaopan */
'
}, static_mappings: { files: [{ src: 'js/index.js', dest: 'build/index.min.js' }, { src: 'js/main.js', dest: 'build/main.min.js' }], } }, concat: { bar: { src: ["build/*.js"], dest: 'dest/all.min.js', }, css: { src: ["build/*.min.css"], dest: 'dest/all.min.css' } }, cssmin: { target: { files: [{ expand: true, cwd: 'css/', src: ['*.css', '!*.min.css'], dest: 'build', ext: '.min.css' }] } }, watch: { files: ['js/*.js', 'css/*css'], tasks: ['uglify', 'concat', 'cssmin'] } }); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.registerTask('default', ['uglify', 'concat', 'cssmin', 'watch']); }

파일 이 변경 되 었 을 때 자동 으로 작업 을 수행 합 니 다:
➜  grunttest grunt
Running "uglify:static_mappings" (uglify) task
File build/index.min.js created: 518 B → 310 B
File build/main.min.js created: 2.92 kB → 687 B
>> 2 files created.

Running "concat:bar" (concat) task

Running "concat:css" (concat) task

Running "cssmin:target" (cssmin) task
>> 2 files created. 1.12 kB → 815 B

Running "watch" task
Waiting...
>> File "css/style.css" changed.
Running "uglify:static_mappings" (uglify) task
File build/index.min.js created: 518 B → 310 B
File build/main.min.js created: 2.92 kB → 687 B
>> 2 files created.

Running "concat:bar" (concat) task

Running "concat:css" (concat) task

Running "cssmin:target" (cssmin) task
>> 2 files created. 1.13 kB → 836 B

Done.
Completed in 0.857s at Wed Jun 15 2016 08:24:37 GMT+0800 (CST) - Waiting...

소스 코드
원본 다운로드 주소:http://download.csdn.net/detail/napoay/9549795

좋은 웹페이지 즐겨찾기