博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript 项目构建工具 Grunt 实践:安装和创建项目框架
阅读量:6198 次
发布时间:2019-06-21

本文共 2816 字,大约阅读时间需要 9 分钟。

    是一个基于任务的  项目命令行构建工具,运行于 Node.js 平台。Grunt 能够从模板快速创建项目,合并、压缩和校验 CSS & JS 文件,运行单元测试以及启动静态服务器。

 

  

 

安装 Grunt

  推荐 Windows 用户使用 Git Shell 来进行命令行操作。安装 Windows 桌面版 GitHub 的时候会自动安装 Git Shell。

  GitHub for Windows 下载地址:

  Grunt 运行于 Node.js 环境,这里假设你已经安装了 Node.js 和 NPM。

1
npm install grunt

  为了便于操作,可以使用参数 -g 配置为全局安装:

1
npm install -g grunt

  

创建项目框架

  安装好 Grunt 后就可以开始创建项目了,Grunt 内置下面四种基本的项目模板:

  gruntfile,创建命令:

1
grunt init
:gruntfile

  commonjs,创建命令:

1
grunt init
:commonjs

  jquery,创建命令:

1
grunt init
:jquery

  node,创建命令:

1
grunt init
:node

  我们今天创建的是 jQuery 项目,编写一个 jQuery 插件示例。现在 GitHub 创建好示例仓库 GruntDemo,然后使用桌面版工具克隆到本地,在 Git Shell 中进入仓库目录,再输入 grunt init:jquery 命令进行创建,如果当前位置已存在项目,可能会有如下提示:

  

  如果需要覆盖,这个时候需要使用 --forece 参数:

1
grunt init
:jquery 
--force

  创建项目时,需要填写一些项目的基本信息,例如项目名称、描述、仓库地址、作者信息(后面几项有默认内容)等,如图示:

  

  OK,到这里项目就创建成功了!下面是项目的目录结构:

  

  并且 README.md 文件的内容和格式也生成好了:

  

  然后就可以编写插件代码了。Grunt 提供的 jQuery 插件代码框架如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*
 
* GruntDemo
 
* https://github.com/bluesky/grunt-demo
 
*
 
* Copyright (c) 2013 BlueSky
 
* Licensed under the MIT license.
 
*/
 
(
function
($) {
 
  
// Collection method.
  
$.fn.awesome = 
function
() {
    
return 
this
.each(
function
() {
      
$(
this
).html(
'awesome'
);
    
});
  
};
 
  
// Static method.
  
$.awesome = 
function
() {
    
return 
'awesome'
;
  
};
 
  
// Custom selector.
  
$.expr[
':'
].awesome = 
function
(elem) {
    
return 
elem.textContent.indexOf(
'awesome'
) >= 0;
  
};
 
}(jQuery));

  同时还生成了相应的 Qunit 测试代码和页面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/*global QUnit:false, module:false, test:false, asyncTest:false, expect:false*/
/*global start:false, stop:false ok:false, equal:false, notEqual:false, deepEqual:false*/
/*global notDeepEqual:false, strictEqual:false, notStrictEqual:false, raises:false*/
(
function
($) {
 
  
module(
'jQuery#awesome'
, {
    
setup: 
function
() {
      
this
.elems = $(
'#qunit-fixture'
).children();
    
}
  
});
 
  
test(
'is chainable'
, 1, 
function
() {
    
// Not a bad test to run on collection methods.
    
strictEqual(
this
.elems.awesome(), 
this
.elems, 
'should be chaninable'
);
  
});
 
  
test(
'is awesome'
, 1, 
function
() {
    
strictEqual(
this
.elems.awesome().text(), 
'awesomeawesomeawesome'
'should be thoroughly awesome'
);
  
});
 
  
module(
'jQuery.awesome'
);
 
  
test(
'is awesome'
, 1, 
function
() {
    
strictEqual($.awesome(), 
'awesome'
'should be thoroughly awesome'
);
  
});
 
  
module(
':awesome selector'
, {
    
setup: 
function
() {
      
this
.elems = $(
'#qunit-fixture'
).children();
    
}
  
});
 
  
test(
'is awesome'
, 1, 
function
() {
    
// Use deepEqual & .get() when comparing jQuery objects.
    
deepEqual(
this
.elems.filter(
':awesome'
).get(), 
this
.elems.last().get(), 
'knows awesome when it sees it'
);
  
});
 
}(jQuery));

  

本文转自山边小溪 51CTO博客,原文链接:http://blog.51cto.com/lihongbo/1134174,如需转载请自行联系原作者

你可能感兴趣的文章
002.怎么让一个不定高的DIV垂直水平居中
查看>>
guava 缓存过期策略
查看>>
PHPSTORM + XDEBUG + Chrome
查看>>
python爬取动态加载网页-requests.post
查看>>
ORA-03113:通信通道的文件结尾
查看>>
云数据库MongoDB监控指标解读与关注
查看>>
Node.js 入门教程(文档)
查看>>
Go语言完全自学手册(图文教程)
查看>>
网络编程初始
查看>>
在同一个jsp下使用两个不同的Ueditor时,第二次加载的Ueditor会失败
查看>>
SpringBoot-JavaMail ----传输邮件
查看>>
Struts2中的校验
查看>>
1111111111 Redis基础、高级特性与性能调优
查看>>
HTML5从入门到精通,零基础学员必看
查看>>
看阿里云如何为直播用户营造临场沉浸感?
查看>>
阿里云Apsara Block Storage企业级分布式块存储产品发布
查看>>
Eclipse Java类编辑器里出现乱码的解决方案
查看>>
C++复习(第四节)内存泄漏 、this指针
查看>>
“大健康•大产业•新未来”健康产业投资与发展高峰论坛举办
查看>>
MySQL6.0安装
查看>>