前端必看 grunt搭建自动化的web前端开发环境

本文章是关于搭建和安装grunt前端。言简意赅分为以下几步,按步骤操作可搭建一个简单的前端框架。以后再开发前端的时候,可以再根据实际项目需求,逐渐完善和增加相关插件和环境,这里就不多做论述了。本随笔若有错误之处欢迎指正,也欢迎各位同行一起交流成长。

一.安装nodejs

下载地址:https://nodejs.org/en/

在下载nodejs时候,应注意:1.最新版本的尽量别用,2.奇数版本号的版本被认为是不稳定的开发版,不过从官网上下载下来的应该都是偶数的稳定版。

本例子,nodejs的版本为:node-v4.4.5-x64

安装时,点击下一步到底即可。

安装完成后,在制台中输入“node -v”来查看nodejs的版本,也顺便试验nodejs是否安装成功。

二.安装grunt-CLI

“CLI”:翻译为“命令行”。

在控制台输入:

1.windows系统:

npm install -g grunt-cli

2.mac os 系统、部分linux系统:

                                                     sudu npm install -g grunt-cli

验证一下grunt-cli是否安装完成并生效,在命令行中输入“grunt”命令即可。生效则会出现以下结果:


三.搭建一个项目

新建一个“template”的文件夹,在里面创建dist和src的文件夹,src为项目内容,dist为压缩合并转译等处理过后的文件夹,在src里面建立css,js文件夹,里面对应放入相应的文件夹和文件。

在根目录创建一个package.json文件。

在里面写入如下代码:

{
  "name": "template",
  "version": "1.0.0",
  "devDependencies": {
  }
}
最后一个“devDependencies”为“开发依赖项”,即我们现在这个系统,将会依赖于哪些工具来开发,目前为空对象,在之后的操作中,随着安装的进行,会逐渐填充起来的。

四. 安装grunt

以上的几步,安装grunt-CLI都是在全局安装的,这里我们要安装grunt 则是在项目文件下安装的,这里我们要在控制台中跳转到项目文件目录下,这里我的项目文件的地址为 D:\template,在控制台输入d:再输入 cd template
然后再项目文件目录下输入:
npm install grunt --save-dev

“—save-dev”的意思是,在当前目录安装 grunt 的同时,顺便把 grunt 保存为这个目录的开发依赖项由于grunt仅在开发阶段使用,所以使用--save-dev如果是运行时使用的,则用--save

上文配置package.json时,“devDependencies”的“devDependencies”中就会存储开发依赖项。

在输入npm install grunt --save-dev后:

并且,在项目文件下,多了一个“node_modules”文件夹。

在控制台运行“grunt”命令。如果得到一个warning提示,那说明grunt已经起作用了。


五. 配置Gruntfile.js

在根目录建立Gruntfile.js,里面输入如下代码:
module.exports = function( grunt )
{
   grunt.initConfig( {
      /* 任务配置,所有插件的配置信息 */
      pkg: grunt.file.readJSON( "package.json" )

   } );
   //告诉grunt当我们在终端中输入grunt时需要做些什么(注意先后顺序)
   grunt.registerTask( 'default', [] );
};
再运行一下grunt命令,如下图,说明正确。

六. Grunt插件安装和配置

grunt官网的插件列表页面   http://www.gruntjs.net/plugins ,上面有足够多的插件,这里就简单介绍几个常用的插件。
插件安装命令如下:
npm install grunt-contrib-jshint --save-dev      --javascript语法错误检查;     
npm install grunt-contrib-csslint --save-dev    --css语法错误检查;                            
npm install grunt-contrib-uglify --save-dev      --压缩,合并javascript代码;                          
npm install grunt-contrib-cssmin --save-dev    --压缩,合并css代码;                                                         
npm install grunt-contrib-less --save-dev         --把less转换成css;                                                                           
npm install grunt-contrib-concat --save-dev      --合并多个文件的代码到一个文件中;                                      
npm install grunt-contrib-watch --save-dev      --实时监控文件变化、调用相应的任务重新执行;     
npm install grunt-contrib-newer --save-dev      --文件更改后,增量更新,而不是对所有的文件去执行任务;           
npm install grunt-contrib-copy --save-dev        --复制文件、文件夹;                                                           
npm install grunt-contrib-clean --save-dev       --清空文件、文件夹;                                         

七. uglify插件安装(压缩javescript代码)

控制台中,在项目目录下输入:  npm install grunt-contrib-uglify --save-dev
在项目文件喜爱src  js 中建立一个text.js,输入如下代码,作为测试js文件。
1、打开gruntfile.js,在grunt.initConfig方法中配置 uglify 的配置参数。如下图:
/*======= 压缩js,uglify插件的配置信息 =======*/
uglify: {
   options: {
      //在所有生成的文件上方加上 时间
      banner: '/*! <%= pkg.file %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
   },
   minjs: {
      files: [ {
         expand: true,     // 启用下面的选项
         cwd: 'src/js/',       // 指定待压缩的文件路径
         src: [ '**/*.js', '!**/*.min.js' ], // 匹配相对于cwd目录下的所有js文件(排除.min.js文件)
         dest: 'dist/js',   // 生成的压缩文件存放的路径
         ext: '.min.js'    // 生成的文件都使用.min.css替换原有扩展名,生成文件存放于dest指定的目录中
      } ]
   },
   /*  合并js  */
   merge: {
      files: {
         /* 合并指定目录下   所有的js文件 */
         'dist/js/merge/all/all.js': [ 'dist/js/**/*.js'],     //前者为合并的路径,后者为对象路径
         /* 合并指定目录下   特定的js文件 */
         'dist/js/merge/some/some.js': [ 'dist/js/jquery/*.js']
      }
   }
},
2、在 grunt.initConfig 方法之后,要让grunt去加载这一个插件,如下:
//告诉grunt我们将使用插件
grunt.loadNpmTasks( 'grunt-contrib-uglify' );
3、在grunt命令执行时,要不要立即执行uglify插件?如果要,就写上,否则不写。
//告诉grunt当我们在终端中输入grunt时需要做些什么(注意先后顺序)
grunt.registerTask( 'default', [ 'uglify'] );
当然了,也可以这么写,简化一点:
//告诉grunt当我们在终端中输入grunt时需要做些什么
grunt.registerTask( 'default', [], function()
{
   //告诉grunt我们将使用插件
   grunt.loadNpmTasks( 'grunt-contrib-uglify' );
   
   //需要执行哪些任务(注意先后顺序)
   grunt.task.run(
      'newer:uglify'
   );
} );
至此前期工作都做好了,可以在控制台输入命令运行了,在控制台输入grunt
成功,如下图:

八. cssmin插件安装(压缩css代码)
控制台中,在项目目录下输入:  npm install grunt-contrib-cssmin --save-dev
1、打开gruntfile.js,在grunt.initConfig方法中配置 cssmin 的配置参数。如下图:
/*=======  压缩css,cssmin插件的配置信息 =======*/
cssmin: {
   /*压缩 CSS 文件为 .min.css */
   options: {
      keepSpecialComments: 0 /* 移除 CSS 文件中的所有注释 */
   },
   /*  合并CSS  */
   merge:{
      files:{
         /* 合并指定目录下   所有的CSS文件 */
         'src/css/merge/all/all.css':[ 'src/css/**/*.css', '!src/css/**/*.min.css'],
         /* 合并指定目录下   特定的CSS文件 */
         'src/css/merge/some/some.css':['src/css/bootstrap/*.css', 'src/css/some.css', '!src/css/**/*.min.css']
      }
   },
   minify: {
      expand: true,                      // 启用下面的选项
      cwd: 'src/css/',                   // 指定待压缩的文件路径
      src: [ '**/*.css', '!**/*.min.css' ],     // 匹配相对于cwd目录下的所有css文件(排除.min.css文件)
      dest: 'dist/css',               // 生成的压缩文件存放的路径
      ext: '.min.css'                        // 生成的文件都使用.min.css替换原有扩展名,生成文件存放于dest指定的目录中
   }
},
2、在 grunt.initConfig 方法之后,要让grunt去加载这一个插件,如下:
//告诉grunt我们将使用插件
grunt.loadNpmTasks( 'grunt-contrib-cssmin' );
grunt.loadNpmTasks( 'grunt-contrib-uglify' );
3、在 grunt.initConfig 方法之后,要让grunt去加载这一个插件,如下:
//告诉grunt当我们在终端中输入grunt时需要做些什么(注意先后顺序)
grunt.registerTask( 'default', ['cssmin','uglify'] );
至此前期工作都做好了,可以在控制台输入命令运行了,在控制台输入grunt
成功,如下图:

九. watch插件安装和配置

控制台中,在项目目录下输入:         npm install grunt-contrib-watch --save-dev
这里我们要注意下,一般 watch 最好要配合 newer 插件使用,因为 watch 监听相关文件变化而调用相应的插件执行,一般项目文件是非常庞大的,零零碎碎不少文件,可谓动一发而牵全身,每次文件改动,就执行watch,就要运行个几秒钟,若是电脑不好,内存2G甚至2G以下,则有可能出现几十秒的时间,故而这里我们要安装newer插件,文件更改后,增量更新,而不是对所有的文件去执行任务。
1、打开gruntfile.js,在grunt.initConfig方法中配置 watch 的配置参数。如下图:
/*======= 监控文件变化并执行相应任务 =======*/
watch: {
   /*  监听当Gruntfile.js改变时,重新刷新加载  */
   configFiles: {
      files: [ 'Gruntfile.js'],
      options: {
         reload: true
      }
   },
   less: {
      files: [ 'src/css/less/*.less' ],   //监听的对象路径
      tasks: [ 'newer:less' ],           //执行的事件
      options: {
         spawn: false,
         debounceDelay:5000             //每次监听的间隔时间
      }
   },
   css: {
      files: [ 'src/css/**/*.css' ],
      tasks: [ 'newer:cssmin' ],
      options: {
         spawn: false,
         debounceDelay:5000
      }
   },
   js: {
      files: [ 'src/js/**/*.js' ],
      tasks: [ 'newer:uglify' ],
      options: {
         spawn: false,
         debounceDelay:5000
      }
   }
}
这里注意一下,这块内容:
/*  监听当Gruntfile.js改变时,重新刷新加载  */
   configFiles: {
      files: [ 'Gruntfile.js'],
      options: {
         reload: true
      }
   },
这表示,当 gruntfile.js 配置文件发生变化的时候,watch 也可以监听到,并根据更改内容,改变并且执行相关事件。
2、在 grunt.initConfig 方法之后,要让grunt去加载这一个插件,如下:
//告诉grunt我们将使用插件
grunt.loadNpmTasks( 'grunt-contrib-cssmin' );
grunt.loadNpmTasks( 'grunt-contrib-uglify' );
grunt.loadNpmTasks( 'grunt-newer' );
grunt.loadNpmTasks( 'grunt-contrib-watch' );
3、在 grunt.initConfig 方法之后,要让grunt去加载这一个插件,如下:
//告诉grunt当我们在终端中输入grunt时需要做些什么(注意先后顺序)
grunt.registerTask( 'default', ['cssmin','uglify',watch’] );
在控制台输入命令运行了,在控制台输入grunt,可以开启 watch 监听, 如下图:

这里我们可以看到,在执行grunt时,按照gruntfile.js里面相关任务的顺序,依次执行一遍,最后我们看到running 'watch' task wating,说明watch已经启用,正在监听。
这里我们随便改动一下一个js文件里面的内容,则会出现:
监听对象一有改变,就能执行绑定事件,十分方便。

十. 批量安装插件

在开发时候,如我本地搭建了前端的环境,其他同事没有,不可能也不会把“node_modules”上传到开发库,其他一起开发的人,为了得到这些grunt插件和工具,有2种方法:

1手动一个一个安装,这是一个笨方法,其次如果我当年安装的旧版本,而他们现在自己安装的可能是新版本。新旧有可能不兼容。

2用此方法,批量安装。

我们在把项目文件上传服务器时,肯定会把根目录的package.json上传上去,而package.jso 的“devDependencies”就记录了这个系统的开发依赖项,我们可以通过nodejs的npm即可批量安装。

下面我们测试一下,在d盘中新建一个' template2 '文件,然后把“grunt_test”中的package.json拷过去。在打开命令行跳转到“temple2” ,执行
npm install
看看得到什么结果。

整个过程相当于把所有插件下载了一遍,然后发现在项目文件中生成了node_modules文件。 且安装的版本和原版本都是一致的。

之后,只需把Gruntfile.js复制到项目文件下,根据项目要求做相应的改动即可。

十. 完结

本次操作只举例了几个插件的安装,类似的jshint,csslint,以及concat就不做讨论了,jshint配合watch可实时检查js代码的错误之处,十分强大,至于concat,则是合并js和css文件,应为cssmin和uglify已经包含此功能,所以也就不需要了,其他还有许多插件,可以自行百度安装,大同小异。
个人认为,平时状态下,jshint和cssmin插件安装好,配置文件代码可以先注释掉,因为每次watch监听,可能会报一大堆错误,影响心情和效率,如果想实时更改可以开启,我的建议是,要找错,要测试再开启。
目前前端glup自动化构建工具也不错,和grunt相比各有千秋,后续也会写一些glup的内容,再补上其他一些插件供给参考。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 答:Grunt是一款基于Node.js前端自动化构建工具,可以帮助开发者更轻松高效地完成日常的前端开发工作。它可以自动编译、合并、压缩和校验CSSJavaScript,也可以在文件发生变化时自动重新加载页面,从而节省开发时间。 ### 回答2: Grunt是一种前端开发的自动化工具,它可以帮助开发人员自动化执行繁琐的任务,提高开发效率。以下是对Grunt的介绍: Grunt是基于Node.js的命令行工具,通过在终端运行Grunt命令,它可以读取一个配置文件(Gruntfile.js),并执行配置中定义的任务。 Grunt的主要功能包括任务的执行、文件的合并与压缩、代码的检查与优化、浏览器自动刷新、项目的打包等。 Grunt的任务是通过插件实现的,开发人员可以根据自己的需求选择和配置不同的插件。Grunt有大量的插件可供使用,并且社区活跃,也可以通过编写自定义的插件来扩展功能。 Grunt支持任务的串行执行,可以定义多个任务按照顺序执行,并且每个任务可以根据需求进行自定义配置。 通过Grunt,开发人员可以自动化执行一些常见的开发任务,例如合并多个CSSJavaScript文件,压缩文件大小,优化图片,运行测试等。这些任务可以通过Grunt配置文件进行定义和管理。 使用Grunt可以大大提高前端开发的效率和质量,减少手动操作的时间和错误。同时,Grunt的配置文件也可以与版本控制系统一起使用,方便团队协作和代码管理。 总之,Grunt是一个强大的前端自动化工具,它可以帮助开发人员自动处理一些繁琐的任务,提高开发效率,减少错误。如果熟练掌握Grunt的使用,对于前端开发将会带来很大的帮助。 ### 回答3: Grunt是一个用于前端自动化构建的工具,它可以帮助开发人员优化前端工作流程,提高开发效率。它基于Node.js,通过使用各种可插拔的任务和插件,可以自动执行流程中的重复性任务,如代码压缩、文件合并、静态资源优化等。 Grunt的主要特点是灵活性和可扩展性。它允许开发人员根据不同的项目需求,自定义构建流程和任务,使得前端工作可以更加高效和便捷。Grunt的核心原则是“配置优先”,通过编写简单的配置文件gruntfile.js,可以定义任务的顺序和参数,从而轻松实现复杂的构建流程。 Grunt通过加载各种插件来扩展功能,这些插件可从Grunt官方插件网站获取,也可以通过npm进行安装。通过引入合适的插件,Grunt可以完成许多常用任务,如代码压缩(使用Uglify插件)、文件合并(使用concat插件)、语法检查(使用JSHint插件)等。 Grunt的安装和使用非常简单。首先,需要在项目目录下通过npm安装grunt-cli工具。然后,在gruntfile.js中定义任务和配置,运行grunt命令即可执行构建流程。此外,Grunt还提供了watch任务,可以监控文件的改动,自动执行相关任务,提高开发效率。 总之,Grunt是一个功能强大的前端自动化工具,可以帮助开发人员简化重复性的任务,提升开发效率和代码质量。它的灵活性和可扩展性使得开发人员能够根据项目需求进行定制,满足不同的构建要求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值