grunt html模块化管理插件,grunt模块化配置
一、简介
构建工具的作用:
在项目部署上线前,通常要将源文件压缩,合并,并拷贝到bch或trunk中。
在将js模块化后,又多了一个分析,提取业务代码中所依赖模块的工作。
解决这一系列繁重工作的自动化工具,称之为构建工具。
任务流程:
task:clean
task:uglify
task:qunit
task:concat
二、安装与构建
1、安装nodejs和npm。(window下集成npm,linux下就需要考虑手动在/usr/sbin/下配置相应的引用路径。
2、安装grunt CLI与grunt
npm install -g grunt-cli 出现错误时 采用npm install grunt-cli --save-dev
参考地址:http://stackoverflow.com/questions/20555605/how-can-i-install-the-grunt-cli-without-getting-errors
npm install grunt --save-dev
linux下安装完grunt之后,会出现-bash: grunt: command not found
vim ~/.bash_profile
加入这句话:export PATH=/home/brianzheng/node_modules/grunt-cli/bin:$PATH
source ~/.bash_profile
grunt --version 进行测试
3、在项目中使用grunt
3-1) 在项目中添加两个文件:package.json和Gruntfile.js
3-1-1) package.json格式示例:
{
"name": "tes",
"version": "1.0",
"description": "merge css and js",
"author": "brianzheng",
"devDependencies": {
"grunt": "~0.4.5",
"grunt-contrib-jshint": "~0.3.0",
"grunt-contrib-concat": "~0.1.1",
"grunt-contrib-uglify": "~0.1.2",
"grunt-contrib-cssmin": "~0.5.0",
"grunt-htmlhint": "~0.9.2"
}
}
package.json放在根目录下,它包含了该项目的一些元信息,如项目名称、描述、版本号,插件等。它应该和源码一样被提交到svn或git。
3-1-2) 在项目中安装常用的插件
grunt-contrib-jshint(js语法检查)、grunt-contrib-concat(js合并)、grunt-contrib-uglify(采用UglifyJS压缩js)、grunt-contrib-cssmin(Css压缩合并)、grunt-htmlhint(html语法验查)、grunt-contrib-clean(清除文件)
在项目中执行:npm install grunt-contrib-jshint,
安装剩余插件类似 npm install 插件名,
安装完成后:在node_modules目录下,会包含相应的插件目录。
Gruntfile.js:
3-2)Gruntfile.js :
3-2-1)、wrapper函数,结构如下,这是Node.js的典型写法,使用exports公开API
module.exports = function(grunt) {
// Do grunt-related things in here
};
3-2-2)、项目和任务配置
3-2-3)载入grunt插件和任务
3-2-4)定制执行任务
示例文件如下:
module.exports = function(grunt) {
// 1.配置参数
grunt.initConfig({
pkg: grunt.file.readJSON("package.json"),
// js删除文件
clean: {
js: [ "build/js-min/*.js" ],
css: [ "build/css-min/*.css" ]
},
// js文件合并
concat: {
options: {
separator: ";",
stripBanners: true,
banner: '/*! - v - ' +
' */'
},
base: {
src: [
"doc/js/jquery-1.11.1.min.js",
"doc/js/common.js",
"doc/js/header.js"
],
dest: "build/js/js-base.js"
},
extras: {
src: [
"doc/js/render-grid.js",
"doc/js/popwin.js",
"doc/js/slider.js"
],
dest: "build/js/js-plugin.js"
}
},
// js压缩文件
uglify: {
options: {
},
base: {
files: {
"build/js-min/js-base.js":
"build/js/js-base.js"
}
},
extras: {
files: {
"build/js-min/js-plugin.js
": "build/js/js-plugin.js"
}
}
},
// css合并压缩
cssmin: {
options: {
keepSpecialComments: 0
},
compress: {
files: {
"build/css-min/css-base.cs
s": [
"doc/css/reset.css",
"doc/css/common.css"
]
}
}
}
});
// 2.载入插件
// js合并插件
grunt.loadNpmTasks("grunt-contrib-concat");
// js压缩插件
grunt.loadNpmTasks("grunt-contrib-uglify");
// css压缩插件
grunt.loadNpmTasks("grunt-contrib-cssmin");
// 清除文件
grunt.loadNpmTasks("grunt-contrib-clean");
// 3.注册任务
grunt.registerTask("default", ["clean", "concat", "uglify", "cssmin"]);
}
执行单个任务:grunt concat
出现错误:
>> Local Npm module "grunt-contrib-concat" not found. Is it installed?
>> Local Npm module "grunt-contrib-uglify" not found. Is it installed?
>> Local Npm module "grunt-contrib-cssmin" not found. Is it installed?
Warning: Task "concat" not found. Use --force to continue.
检查该项目模块里面是否包含node_modules,并且是否已经安装有该系列插件
成功状态提示:
Running "concat:dist" (concat) task
File build/js/js-base.js created.
Done, without errors.
pkg:grunt.file.read.JSON('package.json'):读取package.json已经定义的值
concat是一个合并任务(task),该插件主要负责提取模块中的依赖,并为每个模块设置模块ID。
src:被执行的文件
dest:生成的文件放置的位置
多任务文件合并示例:
concat: {
options: {
separator: ";",
stripBanners: true,
banner: '/*! - v - ' +
' */'
},
base: {
src: [
"doc/js/jquery-1.11.1.min.js",
"doc/js/common.js",
"doc/js/header.js"
],
dest: "build/js/js-base.js"
},
extras: {
src: [
"doc/js/render-grid.js",
"doc/js/popwin.js",
"doc/js/slider.js"
],
dest: "build/js/js-plugin.js"
},
dist: {
src: [
"doc/js/popwin.js",
"doc/js/slider.js"
],
dest: "build/js/js-test.js"
},
dist2: {
src: [
"doc/js/popwin.js",
"doc/js/slider.js"
],
dest: "build/js/js-test.js"
}
}
uglify是一个压缩任务(task)
option:设置参数
build:构建产出文件
加载两个grunt插件
grunt.loadNpmTasks('grunt-contrib-transport');
grunt.loadNpmTasks('grunt-contrib-concat');
注册任务
grunt.registerTask("build", ['concat', 'uglify']);
cmd切换对应项目:
执行: grunt build
将grunt执行体加入到make中
grunt:
grunt build
make grunt
grunt html模块化管理插件,grunt模块化配置相关推荐
- laravel 模块化管理 插件 caffeinated
laravel 模块化管理 插件 caffeinated(以下简称 "咖啡因") 中大型项目 无论是前期 开发还是后期维护 为了节约人力和成本 肯定要进行 模块化开发 今天给大家带 ...
- ES6的模块化管理、立即执行函数(IIFE):在函数声明后面立即调用、函数劫持
1.Node.js简介: (1)Node是什么: A.浏览器内核有两个引擎:渲染引擎(渲染html.css).JavaScript引擎(运行JavaScript代码) B.Node是独立于浏览器的Ja ...
- OSGi.NET 学习笔记 [模块化和插件化][概念]
[目录]-[模块化和插件化]-[概念] 这算是OSGi的基础和灵魂,没有他,后面将要介绍的很多功能都会黯然失色. 先看文档怎么说: 1) 物理隔离:基于UIOSP开发的模块是一个物理隔离的可单独部署的 ...
- Api接口的模块化管理
Api接口的模块化管理 1.模块一 import axios from './axios' function login(){return axios.post('login'); } export ...
- grunt 压缩 html,如何使用 grunt 插件压缩合并 js ?减少页面请求数的秘诀
本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规.大家都是程序员,不要闹得不开心. 安装好grunt后,苏南大叔下一步的计划就是配置Gruntfile.js这个配置文件.在这个文件中,苏南大叔采 ...
- 模块化以及插件化开发个人设计思路
先解释下"模块化"与"插件化"的两个概念 1.模块化设计: 模块化设计,简单地说就是程序的编写不是开始就逐条录入计算机语句和指令,而是首先用主程序.子程序.子过 ...
- elasticSearch6源码分析(2)模块化管理
elasticsearch里面的组件基本都是用Guice的Injector进行注入与获取实例方式进行模块化管理. 在node的构造方法中 /*** Constructs a node** @param ...
- iOS大型项目之模块化管理
2019独角兽企业重金招聘Python工程师标准>>> iOS大型项目之模块化管理 待写 转载于:https://my.oschina.net/zhuzhu1223/blog/157 ...
- grunt入门讲解1:grunt的基本概念和使用
Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.老版本的 Node. ...
- 组织管理插件-代码自动补全-语法检查等特性-SpaceVim v1.5.0
简介: SpaceVim 是一个社区驱动的模块化 Vim/Neovim 配置集合,以模块的方式组织管理插件以 及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全, 语法检查. ...
最新文章
- 税友报税软件让修改服务器地址,税友报税软件让修改服务器地址
- Eclipse 教程
- android按键映射
- HDU 6030 Happy Necklace
- JavaWeb中的乱码解决方法总结
- 【PAT - 甲级1095】Cars on Campus (30分)(模拟)
- 小学五年级年级计算机教学计划,小学五年级信息技术教学计划范文
- 软件开发从需求分析开始
- Ubuntu,QT5连接MySQL
- 使用gc、objgraph干掉python内存泄露与循环引用!
- KiCad坐标文件(.pos)转表格(.xlsx)工具
- POJ 1436 Horizontally Visible Segments(线段树区间修改)
- 按键精灵手机版_关于截屏一些方法
- HTML 媒体(Media)
- 害怕,刷人超过70%?3招应对校招笔试|大厂笔试自救指南|应届生必看
- 图形学笔记(三)画一个彩色的三角形
- Flex/FlashBuilder4.5破解
- Linux搭建Hyperledger Fabric区块链框架 - Hyperledger Fabric模型概念
- 后端思想-如何设计一个操作和管理Excel的业务模块
- 哪项技术是计算机辅助外科的基础,计算机辅助外科手术计划和模拟原理和方法.pdf...