Grunt——前端自动化构建工具

Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器。

Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用。;奇数版本号的 Node.js 被认为是不稳定的开发版。

在安装 Grunt 前,请确保当前环境中所安装的 npm 已经是最新版本,执行 npm update -g npm 指令进行升级(在某些系统中可能需要 sudo 指令)。

安装:grunt-cli

npm install -g grunt-cli

在使用Grunt时,请先看看官网,先创建两个文件package.json:配制插件,等其他参数
{
    "name": "WebApp",
    "version": "0.1.0",//这个请注意格式,防止出现‘0.1’,‘1‘,这些值会出现莫名错误
    "repository": {
        "type": "git",
        "url": "git://github.com/gruntjs/grunt.git"
    },
    "devDependencies": {
        "grunt": "~0.4.5",
        "grunt-contrib-clean": "~0.6.0",
        "grunt-contrib-coffee": "~0.12.0",
        "grunt-contrib-compass": "~1.0.3",
        "grunt-contrib-concat": "~0.5.1",
        "grunt-contrib-cssmin": "~0.12.2",
        "grunt-contrib-csslint": "~0.4.0",
        "grunt-contrib-htmlmin": "~0.4.0",
        "grunt-contrib-imagemin": "~0.9.4",
        "grunt-contrib-uglify": "~0.9.1",
        "grunt-contrib-jshint": "~0.11.2",
        "grunt-contrib-watch": "~0.6.1",
        "grunt-contrib-requirejs": "~0.4.4",
        "grunt-usemin": "~3.0.0",
        "grunt-filerev": "~2.3.1",
        "grunt-contrib-copy": "~0.8.0"
    }
}

Gruntfile.js:自定义任务

module.exports = function (grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON(‘package.json‘),
        useminPrepare: {
            html: ‘app/index.html‘
        },
        concat: {
            js: {
                dest: ‘tmp/concat/app.js‘,
                src: [
                  ‘app/js/app.js‘,
                  ‘app/js/index.js‘,
                  ‘app/js/thing-model.js‘,
                  ‘app/js/thing-view.js‘
                ]
            }
        },
        uglify: {
            js: {
                dest: ‘tmp/uglify/app.js‘,
                src: [‘tmp/concat/app.js‘]
            }
        },
        filerev: {
            js: {
                dest: ‘filerev/js‘,
                src: [‘app/js/*.js‘, ‘tmp/uglify/*.js‘]
            },
            scc: {
                dest: ‘filerev/css‘,
                src: [‘app/css/*.css‘]
            }
        },
        usemin: {
            html: ‘app/index.html‘,
            options: {
                assetsDirs: [‘tmp/uglify‘, ‘‘]//这个值请注意,当执行时不能正常替换静态资源引用时,就是他在作怪
            }
        }
    });
    grunt.loadNpmTasks(‘grunt-contrib-copy‘);//注册插件,必需
    grunt.loadNpmTasks(‘grunt-contrib-concat‘);
    grunt.loadNpmTasks(‘grunt-contrib-uglify‘);
    grunt.loadNpmTasks(‘grunt-contrib-cssmin‘);
    grunt.loadNpmTasks(‘grunt-filerev‘);
    grunt.loadNpmTasks(‘grunt-usemin‘);
    grunt.loadNpmTasks(‘grunt-contrib-clean‘);//默认任务顺序
    grunt.registerTask(‘default‘, [
        ‘useminPrepare‘,
        ‘concat‘,
        ‘uglify‘,
        ‘filerev‘,
        ‘usemin‘
    ]);
};

配制成功后cmd进入你的项目根目录下

npm install

安装插件,时间很长点

然在根目录下执行

grunt

执行默认任务

demo:

目录:

<!DOCTYPE html>
<html>
<head>
    <meta content="width =device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport" />
    <title>Title</title>
    <!-- build:js /tmp/uglify/app.js-->
    <script src="/app/js/app.js"></script>
    <script src="/app/js/index.js"></script>
    <script src="/app/js/thing-model.js"></script>
    <script src="/app/js/thing-view.js"></script>
    <!-- endbuild -->
    <script src="/app/js/app.js"></script>
    <script src="/app/js/index.js"></script>
    <script src="/app/js/thing-model.js"></script>
    <script src="/app/js/thing-view.js"></script>
    <link href="/app/css/index.css" rel="stylesheet" />
</head>
<body>
    <!--{"app\\js\\app.js":"filerev\\js\\app.bc7ed700.js",
    "app\\js\\index.js":"filerev\\js\\index.7f1f0127.js",
    "app\\js\\thing-controller.js":"filerev\\js\\thing-controller.7f1f0127.js",
    "app\\js\\thing-model.js":"filerev\\js\\thing-model.a74d0e62.js",
    "app\\js\\thing-view.js":"filerev\\js\\thing-view.d80fca0d.js"}-->
    <p>this is a grunt usemin</p>
    <img src="image.png" />
</body>
</html>

body中的注释内容为

grunt-filerev插件的map,grunt-usemin就是使用他来替换引用

替换引用后得:
<!DOCTYPE html>
<html>
<head>
    <meta content="width =device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport" />
    <title>Title</title>
    <script src="/tmp/uglify/app.6bdcf715.js"></script>
    <script src="/app/js/app.bc7ed700.js"></script>
    <script src="/app/js/index.7f1f0127.js"></script>
    <script src="/app/js/thing-model.a74d0e62.js"></script>
    <script src="/app/js/thing-view.d80fca0d.js"></script>
    <link href="/app/css/index.704e3ff7.css" rel="stylesheet" />
</head>
<body>
    <!--{"app\\js\\app.js":"filerev\\js\\app.bc7ed700.js",
    "app\\js\\index.js":"filerev\\js\\index.7f1f0127.js",
    "app\\js\\thing-controller.js":"filerev\\js\\thing-controller.7f1f0127.js",
    "app\\js\\thing-model.js":"filerev\\js\\thing-model.a74d0e62.js",
    "app\\js\\thing-view.js":"filerev\\js\\thing-view.d80fca0d.js"}-->
    <p>this is a grunt usemin</p>
    <img src="image.png" />
</body>
</html>

以上就是我现在,还在摸索的grunt,后面慢慢研究研究!希望有一天能用上他

 
时间: 2024-10-27 01:58:22

Grunt——前端自动化构建工具的相关文章

前端自动化构建工具——gulp

gulp是基于流的前端自动化构建工具. 一.环境配置 gulp是基于nodejs的,所以没有 nodejs 环境的要先去安装好 然后给系统配上gulp环境 npm install -g gulp 再到某一工程目录下 跟grunt一般,也是需要package.json包依赖文件和一个入口文件 gulpfile.js(其他名字识别不了) 然后就类似的先装上gulp npm install gulp --save-dev 最基本的使用方式是这样:(使用jshint插件校验js代码) var jshin

前端自动化构建工具

全局安装是把包安装在Node安装目录下的node_modules文件夹中,一般在 \Users\用户名\AppData\Roaming\ 目录下,可以使用npm root -g查看全局安装目录 本地(局部)安装是把包安装在指定项目(要在指定的根目录下输入命令)的node_modules文件夹下(若没有,会自动创建一个node_modules文件夹) 具体区别,推荐博文:  全局安装和本地(局部)安装的区别 本地安装可以让每个项目拥有独立的包,不受全局包的影响,方便项目的移动.复制.打包等,保证不

web 环境搭建00前端自动化构建工具(gulp)

web 环境搭建----前端自动化构建工具(gulp): 1----先下载安装node.js 2----然后在node.js命令行安装:npm install gulp -g (全局下载安装gulp插件) 3----然后进入到项目文件夹(命令cd 文件夹名),在项目文件夹中安装依赖文件:npm install gulp --save-dev (根据依赖文件下载gulp插件) 4----在项目文件夹目录下初始化:npm init (初始化文件) {初始化文件后项目中会出现packgae.json文

前端自动化构建工具Webpack开发模式入门指南

Webpack Webpack是时下最流行的模块打包器 它的主要任务就是将各种格式的JavaScript代码,甚至是静态文件 进行分析.压缩.合并.打包,最后生成浏览器支持的代码 特点: 代码拆分方案:webpack可以将应用代码拆分成多个块,每个块包含一个或多个模块,块可以按需异步加载,极大提升大规模单页应用的初始加载速度 智能的静态分析:webpack的智能解析器几乎可以处理任何第三方库 Loader加载器:webpack只能处理原生js模块,但是loader可以将各种资源转换为js模块 p

gulp 前端自动化构建工具

gulp是基于nodejs的自动化构建工具, 可自动化完成js css sass less html image的测试.检查.合并.压缩.格式化.浏览器自动刷新.部署文件生成.监听文件. 1:基于nodejs先装nodejs(.msi) 2:命令行装npm,npm是nodejs的包管理工具,对node插件进行安装.卸载等 npm install XX -g  安装XX插件 全局安装 --save 将保存配置保存至package.json(package.json把安装插件信息保存到此,可供其他开

前端自动化构建工具Grunt

一.了解Gurnt(http://www.open-open.com/lib/view/open1433898272036.html) Grunt 是一个基于任务的JavaScript工程命令行构建工具. Grunt和Grunt插件,是通过npm安装并管理的,npm是Node.js的包管理器. 了解Grunt前,首先要准备两件事: 1.了解npm(Node Package Manager):npm是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准. 2.安装nod

前端自动化构建工具-yoman浅谈

如今随着前端技术的飞速发展,前端项目也变得越来越复杂.快速的搭建一个集成多种工具和框架的复杂前端项目也越来越成为一种需求.当然如果你要自己从0开始完全自己diy,绝对可以,只不过需要耗费一些不少的时间.既然如此要是有自动化的项目构建工具,帮你生成各种必须的配置项,你只需愉快的写代码该多方便呀.嗯,是的这样的工具或者说脚手架确实是有的,就是下面要提到的eoman.来吧,一起看一下如何使用这个工具让你的项目秒建吧. 初识yeoman yeoman是什么 yeoman是Google领头开发的一个前端构

gulp前端自动化构建工具入门篇

现在我们通过这3个问题来学习一下: 1.什么是gulp? 2.为什么要用gulp? 3.怎么用? 什么是gulp 答:是一个前端自动化的构建工具,直白点说,如果没有这个工具,我们利用人工依旧可以做到以下优点,但是在项目逐渐庞大的时候,采用这个工具,可以提升性能和效率. 为什么要用gulp? 答: 1.js和css属于静态文件,很多时候浏览器存在缓存机制,为了避免缓存带来的误会,可以利用构建工具,给每一个静态文件添加一个版本号,这样浏览器就会认为是新的文件,就不存在缓存机制. 2.性能优化:文件合

前端自动化构建工具gulp记录

什么是gulp 答:Gulp 是一款基于任务的设计模式的自动化工具,通过插件的配合解决全套前端解决方案,如静态页面压缩.图片压缩.JS合并.SASS同步编译并压缩CSS.服务器控制客户端同步刷新.. 为什么要用gulp? 1.js和css属于静态文件,很多时候浏览器存在缓存机制,为了避免缓存带来的误会,可以利用构建工具,给每一个静态文件添加一个版本号,这样浏览器就会认为是新的文件,就不存在缓存机制. 2.性能优化:文件合并,减少http请求:文件压缩,减少文件体积,加快下载速度: 3.效率提升: