问题:

当一个工程里面有好几个项目,每个项目引用同一个包,但是不同的名字,例如在bower中 fancybox 跟 jquery.fancybox 是一样的,我们只需要下载其中的一个版本,而打包工作不是同一个人写的,因此要写如注释,但是bower的配置文件里面不许有注释,那怎么办呢?

解决方法:

使用gulp来生成bower.json 文件

首先我们在Gulpfile.js 文件中

"use strict";
let gulp = require('gulp');
let modify = require('gulp-modify');
let rename = require('gulp-rename');
let strip = require('gulp-strip-comments');
let pump = require('pump'); gulp.task('bower', (cb) => {
pump([
gulp.src('./bower.comment.json'), //使用的文件
strip(),
rename('bower.json'), //重命名
gulp.dest('./') //输出的文件
], cb);
});

首先说一下pump的用法,当我们不使用pump的时候,如果中途出错了,那之前执行的会在,但是使用pump之后,如果中途出错了,之前执行的都不会在。

其次是 gulp-strip-comments 的用法

可以参照 npm中的文档 是用于去除文件中的注释

接下来我们在 bower.comment.json 里面配置我们的包 可以写上注释

{
"name": "main",
"version": "1.0.0",
"homepage": "",
"private": true,
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"public/bower_components",
"test",
"tests"
],
"dependencies": {
// "bootstrap-markdown":"~2.0.0",
"components-font-awesome": "4.6.0",
"jquery.atwho": "1.5.1",
"font-awesome": "4.6.3",
"highlight": "9.5.0",
"pickadate": "3.5.6",
"echarts": "3.2.1",
"jquery": "2.2.4",
"jquery-ui": "1.12.0",
"angular-route":"1.4.6",
"clipboard":"1.5.2",
"d3":"3.5.5",
"fullcalendar":"2.9.0",
"markdown":"0.5.0",
"datepicker":"",
// "bootstrap-datetimepicker":"~0.0.11",
/*jquery plugins ---------begin*/
"datetimepicker": "2.5.4", //jquery.datetimepicker.js
"fancybox": "2.1.5", //jquery.fancybox.js
"jquery-form": "3.46.0", //jquery.form.js
"jquery.hotkeys": "", //jquery.hotkeys.js
"jquery-mousewheel": "3.1.13", //jquery.mousewheel.js
"raty": "2.7.0", //jquery.raty.js
"tooltipster": "4.0.4", //jquery.tooltipster
"jquery-typeahead": "2.6.1", //jquery.typeahead
/*jquery plugins ---------end*/
"dropzone": "4.3.0",
"simditor": "2.3.6",
"slick-carousel": "1.6.0",
"ionicons": "2.0.1",
"vivus": "0.3.1",
"vue": "1.0.26",
"underscore":"1.7.0",
"jquery-extends":"0.1.9",
"jquery.validate":"1.13.0",
"jquery.scrollTo":"1.4.13",
// "file-upload":"1.7.5",
"d3pie":"0.1.3",
"bootstrap-datepicker":"1.6.1",
"bootstrap-datetimepicker":"0.0.11"
},
"resolutions": {
"jquery": "2.2.4",
"angular":"1.4.6",
"bootstrap": "3.3.6"
}
}

接下来输入

gulp bower

就可以看到目录下生成一个bower.json 了、里面就是没有注释的bower配置文件

打开

{
"name": "main",
"version": "1.0.0",
"homepage": "",
"private": true,
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"public/bower_components",
"test",
"tests"
],
"dependencies": {
"components-font-awesome": "4.6.0",
"jquery.atwho": "1.5.1",
"font-awesome": "4.6.3",
"highlight": "9.5.0",
"pickadate": "3.5.6",
"echarts": "3.2.1",
"jquery": "2.2.4",
"jquery-ui": "1.12.0",
"angular-route":"1.4.6",
"clipboard":"1.5.2",
"d3":"3.5.5",
"fullcalendar":"2.9.0",
"markdown":"0.5.0",
"datepicker":"",
"datetimepicker": "2.5.4",
"fancybox": "2.1.5",
"jquery-form": "3.46.0",
"jquery.hotkeys": "",
"jquery-mousewheel": "3.1.13",
"raty": "2.7.0",
"tooltipster": "4.0.4",
"jquery-typeahead": "2.6.1",
"dropzone": "4.3.0",
"simditor": "2.3.6",
"slick-carousel": "1.6.0",
"ionicons": "2.0.1",
"vivus": "0.3.1",
"vue": "1.0.26",
"underscore":"1.7.0",
"jquery-extends":"0.1.9",
"jquery.validate":"1.13.0",
"jquery.scrollTo":"1.4.13",
"d3pie":"0.1.3",
"bootstrap-datepicker":"1.6.1",
"bootstrap-datetimepicker":"0.0.11"
},
"resolutions": {
"jquery": "2.2.4",
"angular":"1.4.6",
"bootstrap": "3.3.6"
}
}

我们开发的时候就在bower.comment.json里面写我们的包引入 这样做的好处就是:开发的时候我们可能由不同的人来开发,提高代码的可阅性

前端资源多个产品整站一键打包&包版本管理(二)——如何在bower的配置文件加上注释的更多相关文章

  1. 前端资源多个产品整站一键打包&包版本管理(一)

    来新公司工作的第五个月.整站资源打包管理也提上了日程. 问题: 首先.什么是整站的打包管理呢? 我们公司的几个重要产品都在同一个webapp里面,但是,不同的开发部门独立开发不同的产品,长期以来,我们 ...

  2. 前端资源多个产品整站一键打包&包版本管理(三)—— gulp分流

    问题: 当我们一个工作台里面有好几个项目的时候,我们要为项目的前端资源进行打包,但是,gulpfile只有一个,如果我们把所有的打包都放在同一个文件里面,首先文件会越来越大,而且不便于管理,这时,我们 ...

  3. 前端资源多个产品整站一键打包&包版本管理(四)—— js&css文件文件打包并生成哈希后缀,自动写入路径、解决资源缓存问题。

    问题: 当我们版本更新的时候,我们都要清理缓存的js跟css,如何使得在网页中不需要手动清理呢? 答案: 生成带有哈希后缀的js跟css文件 1.文件路径 路径中的conf.js 是用于放置全局打包的 ...

  4. 前端到后台ThinkPHP开发整站--php开发案例

    前端到后台ThinkPHP开发整站--php开发案例 总结 还是需要做几个案例,一天一个为佳,那样才能做得快. 从需求分析着手,任务体系要构建好,这样才能非常高效. 转自: 前端到后台ThinkPHP ...

  5. 前端到后台ThinkPHP开发整站(5)

    今天周五了,这个项目做了五个晚上了,明天周末不用上班有一整天的时间来结束这个项目了,今晚主要把后台界面给弄出来了. 大概的整个后台界面就是这个样子了,接下来的工作就是搬砖了,一个个菜单功能填上去就是了 ...

  6. 前端到后台ThinkPHP开发整站(4)

    今晚继续我的这个项目的开发,今晚也是写的不多,主要写了一个菜单管理功能的CURD方法,前端界面还没有进行编写. 菜单管理Model层的代码: <?php namespace Common\Mod ...

  7. 前端到后台ThinkPHP开发整站(2)

    我这次使用的ThinkPHP版本是:3.2.3版本,还有会使用到一个弹出层插件,叫 layer,官网地址是:http://layer.layui.com/.废话不多说,进入撸码环节. 1.通用方法编写 ...

  8. 前端到后台ThinkPHP开发整站(1)

    1.前言: 我个人从来没有写过博客文章,作为一个程序员没有自己的博客算是一个合格的程序员,所以我地想想也要经营起一个的博客,做一个小项目,写这博客算就做这个项目的一个项目笔记吧!现在自学着ThinkP ...

  9. 前端到后台ThinkPHP开发整站(完)

    久违了,今天终于抽空把最后的写完了,这是这个项目的最后一篇文章了,把前台的栏目控制器和文章内容控制器的功能实现了. 栏目控制器: <?php namespace Home\Controller; ...

随机推荐

  1. [AngularJS] Using AngularJS interceptors with $http

    Sometimes you might need to modify HTTP requests and responses. This could be for a variety of reaso ...

  2. Ajax防止重复提交

    转:http://www.cnblogs.com/jinguangguo/archive/2013/05/20/3086925.html 谈谈防止重复点击提交   首先说说防止重复点击提交是什么意思. ...

  3. windows MySQL 5+ 服务手动安装

    一.手动安装mysql 1.准备一个mysql免安装版本(把原来安装好的版本复制一份即可.一次安装多次使用^_^),将mysql复制到指定目录. 2.配置my.ini文件(本例使用的是5.0.22版本 ...

  4. 《RESTful Web Services》第四章 设计URI

    引言 URI是跨越Web的资源描述符,一个URI由以下内容组成——协议.主机.端口号.路径

  5. Events

    Events The idea behind Events is the ability to send data, as parameters, to interested Listeners an ...

  6. Oracle恢复已删除数据

    Oracle恢复已删除的数据,主要有两种方法:SCN和时间戳. 一.通过SCN恢复删除且已提交的数据 1.获得当前数据库的scn号 select current_scn from v$database ...

  7. java集合总结

    java中集合是很重要的一点,巩固这边学习的知识,把知识理一下 按马士兵的视频,总结的也很好,集合就是一个“1136” 1个图,1个类Collections,3个知识点:增强for循环,泛型,打包和解 ...

  8. 虚拟机Linux系统中安装SYNOPSYS工具图解教程

                                        V TRON KO 2.8.2 启动 dv 在终端运行命令: lmli2 然后再运行命令: dv V TRON KO V TRO ...

  9. MongoDB基本操作

    转:http://zhidao.baidu.com/link?url=D5s4tNnP6hH0XPZkFooV-o4MQH3pNZh7C3rtLX_HtVWaIyBRhLIUyoZYfVv15l2eS ...

  10. 初步接触html心得

    接触HTML大概有七天,做一下小总结,过过记忆. html大致可分为三部分:Dtd头.Head.Body三大部分. Dtd头:是用于浏览器编辑的,也就是俗话说的给电脑看的的东西. Head:内细分下大 ...