grunt压缩js和css文件(1)

来源:互联网 发布:p正装照软件 编辑:程序博客网 时间:2024/06/05 03:33

接下来是个人的理解:

压缩js

1、node安装,node会自动安装npm。

 安装完之后查看版本:node -v 和 npm -v

这里写图片描述

2、新建项目后package.json 安装。

命令:npm init(直接一直回车,输入yes之后回车文件夹下就会出现package.json )注意出错:name不能包含大写字母。name: (reactJsCssPak2) reactJsCssPakSorry, name can no longer contain capital letters.

这里写图片描述

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

3、安装grunt命令行工具grunt-cli。

  命令: npm install -g grunt-cli  安装完之后查看版本:grunt -version

4、安装grunt及其插件。

npm install grunt --save-devnpm install grunt-contrib-jshint --save-dev  (  js语法检查)npm install grunt-contrib-uglify --save-dev  (  压缩,采用UglifyJS)npm install grunt-contrib-concat --save-dev ( 合并文件)或npm install grunt grunt-contrib-jshint grunt-contrib-uglify grunt-contrib-concat --save-dev
//安装的时候node_modules出现,而且也出现这四个目录,之后package.json也会显示这四个目录(那是因为在安装插件的时候加了"--save-dev")。 {  "name": "reactpak",  "version": "1.0.0",  "description": "",  "main": "index.js",  "scripts": {    "test": "echo \"Error: no test specified\" && exit 1"  },  "author": "",  "license": "ISC",  "devDependencies": {    "grunt": "^1.0.1",    "grunt-contrib-concat": "^1.0.1",    "grunt-contrib-jshint": "^1.1.0",    "grunt-contrib-uglify": "^2.3.0"  }}

5、新建文件Gruntfile.js

新建一个js,里面包含a.js和b.js ,再新建Gruntfile.js。目录如下:

这里写图片描述

//a.jsfunction a() {    console.log("aaa")}//b.jsfunction b() {    console.log("bbb")}

第一种测试:我只想压缩

//Gruntfile.jsmodule.exports = function(grunt) {  // 配置  grunt.initConfig({      pkg : grunt.file.readJSON('package.json'),      uglify : {          options : {              banner : '\n'          },          build : {              src : 'js/*.js',              dest : 'dest/dest.min.js'          }      }  });  // 载入uglify插件,压缩  grunt.loadNpmTasks('grunt-contrib-uglify');  // 注册任务  grunt.registerTask('default', ['uglify']);}; 

这里写图片描述

//dest.min.jsfunction a(){console.log("aaa")}function b(){console.log("bbb")}

总结:单个js直接压缩,多个js直接合并压缩。

第二种测试:合并与压缩

//Gruntfile.jsmodule.exports = function(grunt) {  // 配置    grunt.initConfig({        pkg : grunt.file.readJSON('package.json'),        concat : {            domop : {                src: ['js/a.js', 'js/b.js'],                dest: 'desttwo/desttwo.js'            }        },        uglify : {            options : {                banner : '\n'            },            build : {                src : 'desttwo/desttwo.js',                dest : 'desttwo/desttwo.min.js'            }        }    });    // 载入concat和uglify插件,分别对于合并和压缩    grunt.loadNpmTasks('grunt-contrib-concat');    grunt.loadNpmTasks('grunt-contrib-uglify');    // 注册任务    grunt.registerTask('default', ['concat', 'uglify']);}; 

这里写图片描述

//desttwo.jsfunction a() {    console.log("aaa")}function b() {    console.log("bbb")}//desttwo.min.jsfunction a(){console.log("aaa")}function b(){console.log("bbb")}

总结:这个过程是先合并再压缩,出现两个js文件。

第三种测试:我想把所有的js单独压缩

//Gruntfile.jsmodule.exports = function(grunt) {    // 配置    grunt.initConfig({        pkg : grunt.file.readJSON('package.json'),        uglify : {            options : {                banner : '\n'            },            my_target: {                files: [                    {                        expand: true,                        //相对路径                        cwd: 'js/',                        src: '*.js',                        dest: 'destthree/js/',                        rename: function (dest, src) {                            var folder = src.substring(0, src.lastIndexOf('/'));                            var filename = src.substring(src.lastIndexOf('/'), src.length);                            //  var filename=src;                            filename = filename.substring(0, filename.lastIndexOf('.'));                            var fileresult=dest + folder + filename + '.min.js';                            grunt.log.writeln("现处理文件:"+src+"  处理后文件:"+fileresult);                            return fileresult;                            //return  filename + '.min.js';                        }                    }                ]            }        }    });    // 载入concat和uglify插件,分别对于合并和压缩    grunt.loadNpmTasks('grunt-contrib-uglify');    // 注册任务    grunt.registerTask('default', ['uglify']);}; 

这里写图片描述

//a.min.jsfunction a(){console.log("aaa")}//b.min.jsfunction b(){console.log("bbb")}
1 0
原创粉丝点击