以构建Bootstrap v4为例练习使用Grunt

1、学习Sass

至本文撰写时,Bootstrap v4还在Alpha阶段,v4采用Sass,而v3版本同时有Sass和Less版本,所以你至少要先学习Sass,另外Less也可以学一学。下面以v4 Alpha 5版本为例。

2、升级npm

npm是Nodejs自带的包管理器,你需要学习它的基本命令,大致就那么几条:

npm install安装package.json里面的依赖;
npm install -g moduleName来全局安装某个包;
npm install --save moduleName安装生产环境所需的包;
npm install --dev moduleName安装开发环境所需的包;
npm update/uninstall moduleName更新或卸载某个包;
npm list查看当前目录下已安装的包;
npm root -g查看全局安装的包的路径;
npm help查看全部命令;

记得用之前必须先升级到最新版:npm install -g npm@4.0.1,npm最新版的版本号去 https://github.com/npm/npm/releases/ 查。为什么升级到最新版很重要?因为在Node.js的世界里,各种包的版本更新会带来难以想象的重大革新,同时解决一系列的bug,这些革新一般人根本没精力去了解,而且Bootstrap的官方肯定是用最新版本的npm,而你如果不用,就会跟官方出现版本差异,你如果遇到一些莫名其妙的问题可不要怪系统也不要怪官方,所以乖乖升级到最新版吧。

另外,用淘宝NPM镜像npm install -g cnpm --registry=https://registry.npm.taobao.org可以极大提升拉包速度,从实践来看,除非你拉单个包(还必须是依赖不多的包),可以用npm,其他的一律用cnpm吧。

3、安装grunt-cli

grunt是Bootstrap使用的构建工具,虽然现在流行的是gulp,但Bootstrap v4使用的是grunt,而且我们今天练习的是grunt。

全局安装grunt:npm install -g grunt-cli

Paste_Image.png

4、把bootstrap@4.0.0-alpha.5拉下来

新建一个文件夹,比如bs4.0.0,在里面执行npm install bootstrap@4.0.0-alpha.5

Paste_Image.png

5、局部安装grunt

拉下bs4.0.0之后,会发现里面有一个node_modules文件夹,再里面有三个文件夹,进入bootstrap文件夹执行npm install grunt

5、安装package.json里面的依赖

打开package.json我们会看到很多依赖包,执行npm install把所有的包安装一遍。这一步非常耗时,需要耐心的等。实在不行,可以用cnpm。现在我用cnpm命令来替代npm命令,来一次cnpm install。虽然也需要几分钟的时间(视网速而定),但已经是快了很多。总之只要是大规模下载包,就优先考虑cnpm。

到此,所有的准备工作完成,bootstrap文件夹中多了一个node_modules文件夹,含有2万多个文件,2700多个文件夹。。。无力吐槽。

6、准备就绪,开工构建一次dist

我们看看bs官方提供的build-tools一页的文档,其中提到“grunt dist creates the /dist directory with compiled files. ”,也就是说grunt dist命令用于生成dist文件夹,就是distribution(分发)文件夹。

为了测试,我先把已有的dist文件夹改名成dist_bak,然后执行grunt dist

你会发现到Running "babel:dist" (babel) task时候出错,提示冲突。好吧,我修改命令grunt dist --force,再来一次,刚才的冲突没了,但又有Running "uglify:core" (uglify) task出错,而且无法修复。

其实Node.js这种民间搞的生态圈就是这个样子,bs官方用Grunt可能什么问题也没有,原封不动的拿过来咱们自己用,就各种出错,原因是每个人的电脑环境不同,比如我是Windows你是Mac,而且几千个node模块都是靠另外下载,结果每个人下载的模块都可能有几个包的差异,这样的软件大合集,跟大公司开发的集成软件在稳定性上完全没法比。

最后我们去dist文件夹看一看,发现了新的dist文件夹已经构建好,我们拿它对比备份的dist_bak文件夹,发现里面果然少了一个文件,是js\bootstrap.min.js,原因就是Running "uglify:core" (uglify) task出错。其他文件,有一些跟备份文件完全相同,有一些有所不同,原因是我们跟bs官方用的模块版本略有区别。

至此,Grunt构建Bootstrap分发包的过程结束,尽管没有完全成功。

7、grunt watch监视Sass文件的修改

根据bs的官方文档,grunt watch用于监视Sass文件的修改,所以我们测试一下。

先看看备份的bootstrap.css,是127,534 字节。

然后我运行grunt watch,我在_custom.scss文件新增一行$font-size-h1: 12.5rem;,12.5rem是一个很大的字号了。你会发现命令行有重新构建的过程,dist里面的bootstrap.css,是127,535 字节,多了一字节。不过,构建过程又有报错(无力吐槽),所以执行过程还没来得及构建js文件就自动退出了,dist文件夹里面连js文件夹都没有。

练习到此为止。

结论:

1、如果你在实践中没有发现报错,那么恭喜你,你可以使用Grunt。但我仍然建议你改用gulp,自己写gulpfile.js,因为gulpfile.js的写法比Grunt简单得多,运行起来也快得多。可以参考我写的gulp v4编译Bootstrap-sass v3.3.7

2、如果你跟我一样发现了报错,那么还是用gulp吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容