grunt打包工具小记(一)

本文介绍grunt作为前端自动化工具的应用,包括文件压缩、合并及语法检查等基本操作,并演示如何通过配置package.json和gruntfile实现自动化任务,同时涉及grunt与requirejs的结合使用。

grunt打包工具小记(一入门)

首先感谢推荐叶小钗同学,顺带记录下.

grunt

是一套前端自动化工具,一个基于nodeJs的命令行工具,一般用于:

  • 压缩文件
  • 合并文件
  • 简单语法检查

全局安装之后,在需要打包的目录下使用

grunt

grunt使用package.json来配置所需要的信息
用gruntfile来
1.读取package信息
2.插件加载,注册任务,运行任务(grunt对外接口)

module.exports = function (grunt) {
  // 项目配置
    grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),//package入口
    concat: {
      options: {
        separator: ';'//表明头部的注释,以及分割上下JS文件
    },
    dist: {
      src: ['src/zepto.js',   'src/underscore.js', 'src/backbone.js'],
        dest: 'dest/libs.js'
      }//资源路径
      },
    uglify: {//压缩
        build: {
          src: 'dest/libs.js',
          dest: 'dest/libs.min.js'
    }
  }
    });
    //插件注册
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-concat');
    // 默认任务
    grunt.registerTask('default', ['concat', 'uglify']);//运行任务合并以及压缩
}

以上是普通写法
接下来是与requirejs的配合(顺便记录下requirejs的用法)
main.js

    require.config({
      baseUrl: '',//默认路径,还有一种写法是写成data-main=""
      shim: {     //这里有一点不懂,主要是不知道所说的非AMD写法是怎么样的,但是有一个很好的模版是:
        $: {
            exports: 'zepto'
          },
        _: {
            exports: '_'
            },
        B: {
            deps: [
            '_',
            '$'
          ],
        exports: 'Backbone'
      }
      },
      paths: {
        '$': 'src/zepto',
        '_': 'src/underscore',
        'B': 'src/backbone'
        }
      });
      requirejs(['B'], function (b) {
      });

这里是一个其他人的main.js的模版
主要是jquery-UI的部分功能插件似乎没有按照AMD的写法,以及必须依赖于jquery,所以在这里写入

      shim: {
              'jquery.ui.core': ['jquery'],
              'jquery.ui.widget': ['jquery'],
              'jquery.ui.mouse': ['jquery'],
              'jquery.ui.slider':['jquery'],
              "zepto.touch":"Zepto",
              "zepto.fx":"Zepto"
          }

map的用法

  /*模块规则配置*/
    map:{
        '*': {
            'jquery': 'jquery-private',
            'tomLib':'tomLib'
        },
        "jquery-private":{
            "jquery":"jquery"
        }
    }

设置requirejs的配置

    {
      "requirejs": {
        "main": {
          "options": {
            "baseUrl": "",
            "paths": {
              "$": "src/zepto",
              "_": "src/underscore",
              "B": "src/backbone",
              "Test": "src/Test"
            },
            "web": {
              "include": [
                "$",
                "_",
                "B",
                "Test"
              ],
              "out": "dest/libs.js"
            }
          }
        }
      }
    }

然后grunt build
最后目录

然后接下来的部分有些是关于node的,所以下次再接着写.
主要是现在已经0:56了,又困又累,小偷懒一下吧

转载于:https://www.cnblogs.com/binxchen/p/6528692.html

### 使用 Grunt 进行项目打包的具体命令及配置 #### 安装 Grunt 和相关依赖 要使用 Grunt 打包项目,首先需要确保已安装 `grunt` 及其 CLI 工具。可以通过以下命令完成全局安装[^1]: ```bash npm install -g grunt-cli ``` 接着,在项目的开发环境 (`devDependencies`) 中安装核心的 Grunt 包以及所需的插件。例如: ```bash npm install grunt --save-dev ``` 对于特定功能需求(如压缩 JavaScript 文件),可以安装对应的 Grunt 插件。以下是常用的 Grunt 插件及其用途[^4]: | 插件名称 | 功能描述 | |------------------------------|----------------------------------| | `grunt-contrib-uglify` | 压缩 JavaScript 文件 | | `grunt-contrib-cssmin` | 压缩 CSS 文件 | | `grunt-contrib-htmlmin` | 压缩 HTML 文件 | | `grunt-contrib-watch` | 实时监控文件变化 | 通过如下命令逐安装所需插件并保存到 `package.json` 的 `devDependencies` 部分[^2]: ```bash npm install grunt-contrib-uglify --save-dev npm install grunt-contrib-cssmin --save-dev npm install grunt-contrib-htmlmin --save-dev npm install grunt-contrib-watch --save-dev ``` #### 编写 Gruntfile.js Grunt 的主要配置文件名为 `Gruntfile.js`,它定义了所有的任务和选项。以下是个简单的示例配置文件: ```javascript module.exports = function(grunt) { // 加载必要的插件 grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTasks('grunt-contrib-htmlmin'); // 初始化配置对象 grunt.initConfig({ uglify: { // 配置用于压缩 JS 文件的任务 options: { mangle: true, // 是否混淆变量名 compress: true // 是否启用高级优化 }, my_target: { files: [{ expand: true, cwd: 'src/js/', // 输入目录 src: ['*.js'], // 要处理的文件 dest: 'dist/js/' // 输出目录 }] } }, cssmin: { // 配置用于压缩 CSS 文件的任务 target: { files: [{ expand: true, cwd: 'src/css/', src: ['*.css'], dest: 'dist/css/' }] } }, htmlmin: { // 配置用于压缩 HTML 文件的任务 dist: { options: { removeComments: true, collapseWhitespace: true }, files: [{ expand: true, cwd: 'src/html/', src: ['*.html'], dest: 'dist/html/' }] } } }); // 注册默认任务 grunt.registerTask('default', ['uglify', 'cssmin', 'htmlmin']); }; ``` 上述代码完成了以下几个操作: 1. **加载插件**:调用了多个插件来支持不同的构建任务[^3]。 2. **初始化配置**:为每种类型的资源指定了输入路径、输出路径以及其他参数。 3. **注册任务**:创建了个默认任务,默认执行所有指定的操作。 #### 执行打包命令 当切准备就绪后,可以在终端运行以下命令启动打包过程: ```bash grunt ``` 这会触发 `Gruntfile.js` 中定义的默认任务链,依次执行 `uglify`, `cssmin`, 和 `htmlmin` 等子任务。 如果只想单独运行某个任务,则可以直接指定任务名称,例如仅压缩 JavaScript 文件: ```bash grunt uglify ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值