在我们开始前先介绍下流程:

  1. 安装node.js。
  2. 安装npm。
  3. 全局安装bower。
  4. 根目录创建 .bowerrc (可选)
  5. 在项目中安装bower 并创建 bower.json 文件,运行 bower命令将需要的包安装,然后检查 bower.json 。
  6. 编辑 gulpfile.js 文件 将任务写入。
  7. 在 resources/assets 目录下创建一个.less文件 以待编译使用。
  8. 先运行 gulp copyfiles 命令将文件复制到对应的路径下,然后运行 gulp 进行编译 合并等任务。

1 Bower是什么?

bower是一个包管理工具 只不过它面向前端。

1.1 安装

1.1.1 安装node.js

在我们安装Bower前应该先安装node.js,因为安装Bower我们需要用到npm,首先先看看我们是否安装了npm:

npm --version

如果没有输出版本号,那么可以到nodejs的官网去下载安装,或者通过 homebrew 安装,具体的Google一下 很全。

1.1.2 安装Bower

当安装了npm后可以通过npm全局安装Bower

sudo npm install -g bower

1.1.3 安装Gulp

通过npm全局安装gulp

sudo npm install -g gulp

1.2 引入Bootstrap

1.2.1 在项目根目录创建一个 .bowerrc 文件(可选)

这是bower的一个步骤,目的是告诉Bower 下载的文件放到什么地方,我们创建并编辑bowerrc文件:

{
"directory": "vendor/bower_dl"
}

↑ 这一步是可选的,如果没有指定路径的话 bower会自动在项目根目录创建一个bower_dl文件夹存放下载的文件,

1.2.2 在项目本地安装Bower

sudo npm install bower

1.2.3 在项目根目录创建 bower.json 文件

bower.json文件时管理依赖包的,它跟composer.json类似,我们编辑它的内容:

{
"name": "learn_project",
"description": "Learn Laravel",
"ignore": [
"**/.*",
"node_modules",
"vendor/bower_dl",
"test",
"tests"
]

1.2.4 开始引入前端文件

上面的配置完成后我们就可以引入前端资源了:

bower install jquery bootstrap --save

完事儿之后看一眼 bower.json 是否添加了两个依赖:

{
"name": "learn_project",
"description": "Learn Laravel",
"ignore": [
"**/.*",
"node_modules",
"vendor/bower_dl",
"test",
"tests"
],
"dependencies": {
"jquery": "^3.2.1",
"bootstrap": "^3.3.7"
}
}

的确添加了两个依赖 一个jQuery 一个bootstrap,然后运行bower update命令就可以下载到 /vendor/bower_dl 咯。


2 Gulp

Gulp是一个前端的工作流工具,它可以让你在开发中变得很轻松。接下来我们就会使用到Gulp。

2.1 编写一个less文件

我们先在 resource/asset/ 目录下创建一个 .less 文件,文件名随你命名,然后编辑此文件如下:

@import "bootstrap/bootstrap";
@import "//fonts.googleapis.com/css?family=Roboto:400,300"; @btn-font-weight: 300;
@font-family-sans-serif: "Roboto", Helvetica, Arial, sans-serif; body, label, .checkbox, label {
font-weight: 300;
}

↑ 在上面代码中 我们引入了bootstrap 但是它现在还没有引入到正确的路径中,我们下面就要使用Gulp将其拷贝到正确的位置。

2.2 编辑gulpfile.js

var gulp = require('gulp');
var elixir = require('laravel-elixir'); /*
|--------------------------------------------------------------------------
| Elixir Asset Management
|--------------------------------------------------------------------------
|
| Elixir provides a clean, fluent API for defining some basic Gulp tasks
| for your Laravel application. By default, we are compiling the Less
| file for our application, as well as publishing vendor resources.
|
*/ /**
* 拷贝所需要的文件
*/
gulp.task("copyfiles", function(){
// 拷贝jQuery到resources等待合并
gulp.src("vendor/bower_dl/jquery/dist/jquery.js")
.pipe(gulp.dest("resources/assets/js/"));
// 拷贝bootstrap到resources,提供给layout.less引入。
gulp.src("vendor/bower_dl/bootstrap/less/**")
.pipe(gulp.dest("resources/assets/less/bootstrap"));
// 拷贝bootstrap.js到resources等待合并
gulp.src("vendor/bower_dl/bootstrap/dist/js/bootstrap.js")
.pipe(gulp.dest("resources/assets/js/"));
// 拷贝fonts到public
gulp.src("vendor/bower_dl/bootstrap/dist/fonts/**")
.pipe(gulp.dest("public/assets/fonts"));
}); elixir(function(mix) {
// 合并js文件
mix.scripts(['js/jquery.js', 'js/bootstrap.js'],
// 合并到哪里
'public/assets/js/app.js',
// 从哪个路径搜索这些需要合并的文件
'resources/assets'
); // 编译less文件
mix.less('layout.less','public/assets/css/layout.css');
});

2.3 运行Gulp

我们先运行 gulp copyfiles 来将需要用到的文件拷贝到相应的路径下:

gulp copyfiles

然后运行 gulp 来进行合并和编译:

gulp

当两个命令都运行完 你就可以看看你的public目录和resources目录是不是有所变化。


3 使用编译好的前端文件

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="/assets/css/layout.css">
</head>
<body>
<script src="/assets/js/app.js"></script>
</body>
</html>

Bower和Gulp集成前端资源的更多相关文章

  1. 基于Laravel开发博客应用系列 —— 使用Bower+Gulp集成前端资源

    本节我们将讨论如何将前端资源集成到项目中,包括前端资源的发布和引入.本项目将使用 Bower 和 Gulp 下载和集成jQuery.Bootstrap.Font Awesome 以及 DataTabl ...

  2. Django项目引入NPM和gulp管理前端资源

    前言 之前写了一篇<Asp-Net-Core开发笔记:使用NPM和gulp管理前端静态文件>,现在又来用Django开发项目了,之前我搞了一个Django的快速开发脚手架「DjangoSt ...

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

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

  4. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...

  5. 常用 Gulp 插件汇总 —— 基于 Gulp 的前端集成解决方案(三)

    前两篇文章讨论了 Gulp 的安装部署及基本概念,借助于 Gulp 强大的 插件生态 可以完成很多常见的和不常见的任务.本文主要汇总常用的 Gulp 插件及其基本使用,需要读者对 Gulp 有一个基本 ...

  6. 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一)

    相关连接导航 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二) 常用 Gulp 插件汇总 ...

  7. 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二)

    前言 文章 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 中,已经完成对 gulp 的安装,由于是window环境,文中特意提到了可以通过安装 gitbash 来代替 ...

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

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

  9. Yeoman+Bower+gulp web前端自动化工作流程(初级教程)

    Yeoman包括了三个部分yo(脚手架工具).grunt/gulp(构建工具).bower(包管理器).听说gulp更容易上手,所以我就没用grunt而选的gulp 什么是开发流程? 在我看来一个完整 ...

随机推荐

  1. windows下更换jdk运行当前jar包处理命令一则

    可在文本文档中新建以下内容 set JAVA_HOME=C:\jdk1.7.0_67set CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOMe%\lib\too ...

  2. MongoDB 操作手冊CRUD 删除 remove

    删除记录 概述 在MongoDB中,db.collection.remove()方法用于删除集合中的记录.能够删除全部记录,删除全部符合条件的记录.或者是仅删除一条记录. 删除全部记录 删除一个集合中 ...

  3. 通过 thread dump 分析找到高CPU耗用与内存溢出的Java代码

    http://heylinux.com/archives/1085.html通过 thread dump 分析找到高CPU耗用与内存溢出的Java代码 首先,要感谢我的好朋友 钊花 的经验分享. 相信 ...

  4. 模拟循环单击事件实现layout中间panel全屏

    jquery提供了toggle方法 toggle() 方法切换元素的可见状态. 如果被选元素可见,则隐藏这些元素,如果被选元素隐藏,则显示这些元素. 语法 $(selector).toggle(spe ...

  5. 【转】火星坐标、百度坐标、WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版

    原文地址:https://www.cnblogs.com/fwc1994/p/5884115.html 火星坐标 火星坐标是国家测绘局为了国家安全在原始坐标的基础上进行偏移得到的坐标,基本国内的电子地 ...

  6. AsyncHttpClient来完成网页源代码的显示功能,json数据在服务器端的读取还有安卓上的读取

    一.使用AsyncHttpClient来完成网页源代码的显示功能: 首先.我们引入 步骤: 1.添加网络权限 2.判断网页地址是否为空 3.不为空的情况下创建客户端对象 4.处理get/post请求 ...

  7. ITIL学习心笔记总结

    四:价值: 被验证的价值1:革新意识---管理也是第一生产力 被验证的价值2:统一思路---这不是一个人的战斗 被验证的价值3:体系的价值---‘新木桶原理’ ITSM的实施经验表明,“”一流的工程师 ...

  8. SpringCloud系列十六:Feign使用Hystrix

    1. 回顾 上文讲解了使用注解@HystrixCommand的fallbackMethod属性实现回退.然而,Feign是以接口形式工作的, 它没有方法体,前文讲解的方式显然不适用与Feign. 事实 ...

  9. Sublime Text 2/3如何支持中文GBK编码(亲测实现)

    Sublime Text 2/3如何支持中文GBK编码 听语音 | 浏览:17594 | 更新:2014-03-17 10:52 1 2 3 4 5 分步阅读 Sublime Text默认是只支持UT ...

  10. Python学习之read()方法

    read([size [,chars [,firstline]]]) 含义: 从文本流(io.TextIOWrapper)中解码数据并返回字符串对象.