grunt 压缩合并,压缩css和js

提示:本demo是在window系统环境下

1.安装grunt前先安装nodeJS nodejs官网 http://nodejs.cn/ ,下载安装即可

2.安装grunt-CLI

npm install -g grunt-cli

3.建立自己的项目

我的目录结构如下,最后俩个文件是自己建立的新的空文档 ,注意node_modules 是一会安装grunt依赖自动生成的,不需要自己创建


在packeage.json 文件中先写如下格式代码

{
  "name": "grunt_test",
  "version": "1.0.0",
  "devDependencies": {
    "grunt": "^1.0.1",
    "grunt-contrib-concat": "^1.0.1",
    "grunt-contrib-csslint": "^2.0.0",
    "grunt-contrib-cssmin": "^2.0.0",
    "grunt-contrib-jshint": "^1.1.0",
    "grunt-contrib-uglify": "^2.2.0",
    "grunt-contrib-watch": "^1.0.0"
  }
}

其中devDependencies的内容是以后安装的插件名称和版本信息,在使用命令安装插件后会自动生成

4. 进入到工程根目录安装grunt 作为项目的依赖

  npm install grunt --save-dev  

“—save-dev”的意思是,在当前目录安装grunt的同时,顺便把grunt保存为这个目录的开发依赖项

然后工程目录中会出现一个node_modules的文件夹,里面含有很多文件,但是不需要管它

5. 配置Gruntfiles.js 格式如下

module.exports = function(grunt) {
	//任务配置
	grunt.initConfig({
		//获取package.json的信息
		pkg: grunt.file.readJSON('package.json'),
			
	});
	grunt.registerTask('default', ["jshint",'csslint','concat','cssmin','uglify','watch']);

};
然后在命令行中输入 “grunt” 运行

6. 安装Grunt插件

 插件分为两类。第一类是grunt团队贡献的插件,这些插件的名字前面都带有“contrib-”前缀,而且在插件列表中有星号标注。第二类是第三方提供的插件,不带有这两个特征。

以下是非常常用的插件,几乎每个项目中都用到的这几个插件

  • Contrib-jshint——javascript语法错误检查;
  • Contrib-watch——实时监控文件变化、调用相应的任务重新执行;
  • Contrib-clean——清空文件、文件夹;
  • Contrib-uglify——压缩javascript代码
  • Contrib-copy——复制文件、文件夹
  • Contrib-concat——合并多个文件的代码到一个文件中
    
    
  • karma——前端自动化测试工具

7.使用插件,这里只以一个uglify(压缩js)插件为例

安装uglify插件(以后的所有插件都是以这样的命令形式安装)

npm install grunt-contrib-uglify --save-dev

下边编写一段代码测试

在 src 文件夹下新建一个test.js文件,然后写一段js代码

	function add(a, b) {
		return a + b;
	}
	function jian(a, b) {
		return a - b;
	}
	add(10,20);
	jian(30,10);
然后在Grunfiles.js文件中配置uglify插件

module.exports = function(grunt) {
	//任务配置
	grunt.initConfig({
		//获取package.json的信息
		pkg: grunt.file.readJSON('package.json'),
		
		//压缩js
		uglify: {
			options: {
				stripBanners: true,
				banner: '/*! <%= pkg.name %>-<%=pkg.version%>.js <%= grunt.template.today("yyyy-mm-dd") %> */\n'
			},
			build: {
				src: 'src/test.js',
				dest: 'build/<%=pkg.name%>-<%=pkg.version%>.min.js'
			}
		},
		
		
	
	});
	grunt.loadNpmTasks('grunt-contrib-uglify');
	
	grunt.registerTask('default', ['uglify']);

};

 上面,对uglify的配置有两项。

  “options”中规定允许生成的压缩文件带banner,即在生成的压缩文件第一行加一句话说明。注意,其中使用到了pkg获取package.json的内容。

  “build”中配置了源文件和目标文件。即规定了要压缩谁?压缩之后会生成谁?注意,我们这里将目标文件的文件名通过pkg的name和version来命名。

在 grunt.initConfig 方法之后,要让grunt去加载这一个插件 
grunt.loadNpmTasks('grunt-contrib-uglify');
第三步:注册任务
grunt.registerTask('default', ['uglify']);


在命令行输入 grunt 运行

这样在我们的工程目录中的build目录中就会出现压缩后的js文件


8. 其他的插件我就不再赘述,直接上代码

module.exports = function(grunt) {
	//任务配置
	grunt.initConfig({
		//获取package.json的信息
		pkg: grunt.file.readJSON('package.json'),
			//将多个文件合并成一个文件
			concat: {
	          options:{
	            stripBanners:true, //合并时允许输出头部信息
	            banner:'/*!<%= pkg.name %> - <%= pkg.version %>-'+'<%=grunt.template.today("yyyy-mm-dd") %> */'
	          },
	          cssConcat:{
	            src:['src/css/one.css','src/css/two.css'],
	            dest:'src/css/<%= pkg.name %> - <%= pkg.version %>.css'//dest 是目的地输出
	          },
	          jsConcat:{
	            src:'src/*.js',
	            dest:'src/<%=pkg.name %> - <%= pkg.version %>.js'
	          }
	      },
		//压缩css
		cssmin: {
			options: {
				stripBanners: true, //合并时允许输出头部信息
				banner: '/*!<%= pkg.name %> - <%= pkg.version %>-' + '<%=grunt.template.today("yyyy-mm-dd") %> */\n'
			},
			build: {
				src: 'src/css/<%=pkg.name %> - <%=pkg.version %>.css', //合并后再压缩
				dest: 'src/css/<%= pkg.name %> - <%= pkg.version %>.min.css' //dest 是目的地输出
			}
		},
		//压缩js
		uglify: {
			options: {
				stripBanners: true,
				banner: '/*! <%= pkg.name %>-<%=pkg.version%>.js <%= grunt.template.today("yyyy-mm-dd") %> */\n'
			},
			build: {
				src: 'src/<%=pkg.name %> - <%=pkg.version %>.js',
				dest: 'build/<%=pkg.name%>-<%=pkg.version%>.min.js'
			}
		},
		//jshint(js语法检测插件)插件的配置信息
		jshint: {
			build: ['Gruntfiles.js', 'src/*.js'],
			options: {
				jshintrc: '.jshintrc'
			}
		},
		//css语法检测
		csslint: {
			build: ['src/css/*.css'],
			options: {
				csslintrc: '.csslintrc'
			}
		},
		 //watch自动化
        watch:{
            build:{
                files:['src/*.js','src/css/*.css'],
                tasks:['jshint','csslint','concat','cssmin','uglify'],
                options:{spawn:false}
            }
        }
	});
	grunt.loadNpmTasks('grunt-contrib-uglify');
	grunt.loadNpmTasks('grunt-contrib-jshint');
	grunt.loadNpmTasks('grunt-contrib-concat');
	grunt.loadNpmTasks('grunt-contrib-cssmin');
	grunt.loadNpmTasks('grunt-contrib-csslint');
	grunt.loadNpmTasks('grunt-contrib-watch');
	grunt.registerTask('default', ["jshint",'csslint','concat','cssmin','uglify','watch']);

};
运行后工程的最终结果目录如下




源代码下载链接  https://github.com/fanshaolin2017/grunt_test.git




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值