zoukankan      html  css  js  c++  java
  • grunt搭建自动化的开发环境

    (1)首先需要下载安装npm、node,创建一个简单的helloworld,这些我就不多说了。(注意两点。第一,grunt依赖于nodejs的v0.8.0及以上版本;第二,奇数版本号的版本被认为是不稳定的开发版,不过从官网上下载下来的应该都是偶数的稳定版)

    (2)然后就是下载安装grunt-cli

    • 命令行输入 npm install -g grunt-cli ,全局安装grunt
    • 检查是否安装成功,在命令行输入grunt,出现以下提示说明安装成功

    (3)下载安装grunt

    • 在我们创建的简单项目目录下,在命令行输入:npm install grunt --save-dev 
    • “—save-dev”的意思是,在当前目录安装grunt的同时,顺便把grunt保存为这个目录的开发依赖项
    • 回车后可以在项目的package.json文件里看见

            

    • 验证grunt是否安装成功,在命令行输入:grunt,出现以下提示说明安装成功

            

    (4)配置Gruntfile.js,该文件与package.json同级,主要是运行grunt需要的配置文件

            

    • 再在命令行输入:grunt,配置了Gruntfile.js文件,就不会再报warning和提示default等问题了

            

    (6)grunt插件

      进入grunt官网的插件列表页面 http://www.gruntjs.net/plugins ,我们能看到grunt到目前位置的所有插件。现在里面有4560个插件,这个数量每天都在增加。

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

      跟jquery一样,插件那么多,肯定不会全部用。grunt官网插件列表的前几个插件中的前几个插件,下载量最多,它们肯定是大家都在用的插件

      咱们可以把前几名插件的作用简单描述一下,看看你在实际编码过程中是否需要?其实不用看就知道答案——肯定需要——要不然怎么会下载量那么高呢?

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

      grunt集全世界web前端开发的智慧于一身,比你想想的更加强大,它的插件库能应对你在web前端开发遇到的任何事情。

    (7)插件介绍

    • uglify插件---js代码压缩插件
    • 官方网址:https://www.npmjs.com/package/grunt-contrib-uglify
    • 下载安装,直接在命令行输入:npm install grunt-contrib-uglify --save-dev
    • 然后在Gruntfile.js文件里加入配置
      //uglify配置信息
              uglify: {
                options: {
                  stripBanners:true,
                  banner: '/*! <%= pkg.name %> - <%= pkg.version %>.js <%= grunt.template.today("yyyy-mm-dd") %> */
      '
                },
                buildall: {//任务三:按原文件结构压缩js文件夹内所有JS文件
                      files: [{
                          expand:true,
                          cwd:'public/javascripts/app',//js目录下
                          src:'**/*.js',//所有js文件
                          dest: 'public/javascripts/appBuild',//输出到此目录下
                          ext: '.min.js'
                      }]
                  }
              }
      // These plugins provide necessary tasks.加载插件
          grunt.loadNpmTasks('grunt-contrib-uglify');
      
      
          // Default task.注册默认任务
          grunt.registerTask('default', [ 'uglify']);
    • 我的项目目录结构如下:
    • 然后在命令行中输入:grunt

    • 可以看见在appBulid文件夹下生成了js的压缩文件
    • 然后同理npm install grunt-contrib-插件名 --save-dev 安装jshint(js语法检查插件)、csslint(css语法检查插件)、cssmin(css压缩插件)、watch(实时监控文件变化、调用相应的任务重新执行)
    • grunt.registerTask('default', ['csslint', 'jshint', 'cssmin', 'uglify', 'watch']);任务注册的顺序,先语法检查,再压缩,最后是监控
    • 相关配置Gruntfile.js代码如下:
    • module.exports = function(grunt) {
      
          // Project configuration.
          grunt.initConfig({
      
              //Read the package.json (optional)
              pkg: grunt.file.readJSON('package.json'),
      
      
              banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
                      '<%= grunt.template.today("yyyy-mm-dd") %>
      ' +
                      '* Copyright (c) <%= grunt.template.today("yyyy") %> ',
              //uglify配置信息
              uglify: {
                options: {
                  stripBanners:true,
                  banner: '/*! <%= pkg.name %> - <%= pkg.version %>.js <%= grunt.template.today("yyyy-mm-dd") %> */
      '
                },
                buildall: {//任务三:按原文件结构压缩js文件夹内所有JS文件
                      files: [{
                          expand:true,
                          cwd:'public/javascripts/app',//js目录下
                          src:'**/*.js',//所有js文件
                          dest: 'public/javascripts/appBuild',//输出到此目录下
                          ext: '.min.js'
                      }]
                  }
              },
              //jshint配置信息
              jshint: {
                all: ['Gruntfile.js', 'public/javascripts/app/*.js']
                // options: ['Gruntfile.js', 'public/javascripts/app/*.js'],
                // build: {
                //   jshintrc: '.jshintrc'
                // }
              },
              //csslint配置信息
              csslint: {
                  options: {
                    csslintrc: '.csslintrc'
                  },
                  strict: {
                    options: {
                      import: 2
                    },
                    src: ['public/stylesheets/app/*.css']
                  },
                  lax: {
                    options: {
                      import: false
                    },
                    src: ['public/stylesheets/app/*.css']
                  }
              },
              //cssmin配置信息
              cssmin: {
                options:{
                      stripBanners:true, //合并时允许输出头部信息
                      banner:'/*!<%= pkg.name %> - <%= pkg.version %>-‘+‘<%=grunt.template.today("yyyy-mm-dd") %> */
      '
                  },
                  build:{
                    files: [{
                        expand:true,
                        cwd:'public/stylesheets/app',//css目录下
                        src:'**/*.css',//所有css文件
                        dest: 'public/stylesheets/appmin',//输出到此目录下
                        ext: '.min.css'
                    }]
                  }
              },
              //watch配置
              watch: {
                files:['public/javascripts/app/*.js', 'public/stylesheets/app/*.css'],
                tasks:['uglify', 'jshint', 'csslint', 'cssmin'],
                options: {spawn:false}
              }
      
      
          });
      
          // These plugins provide necessary tasks.加载插件
          grunt.loadNpmTasks('grunt-contrib-uglify');
          grunt.loadNpmTasks('grunt-contrib-jshint');
          grunt.loadNpmTasks('grunt-contrib-csslint');
          grunt.loadNpmTasks('grunt-contrib-cssmin');
          grunt.loadNpmTasks('grunt-contrib-watch');
      
          // Default task.注册默认任务
          grunt.registerTask('default', ['csslint', 'jshint', 'cssmin', 'uglify', 'watch']);
      };

         

  • 相关阅读:
    docker pull 报X509错误
    Kong配置反向代理后获取原始IP
    MybatisPlus框架
    工厂模式
    Mybatis持久层框架
    linux 使用scp传输公钥时要注意事项
    docker 容器容器之间网络通信 docker-compose.yaml 配置固定ip
    Linux下执行sh文件提示权限不够解决办法
    docker-compose 编写yaml文件的注意事项
    nginx 中location url一定要带http://
  • 原文地址:https://www.cnblogs.com/daisy-hust/p/5647805.html
Copyright © 2011-2022 走看看