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

  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. 模块化开发RequireJS之shim配置

    一.shim requirejs使用AMD规范开发,若开发过程中加载非AMD规范js,需要使用requirejs的shim进行配置. shim配置语法为: //配置文件 requirejs.confi ...

  2. js声明变量的三种方式及作用域

      js声明变量的三种方式及作用域 CreateTime--2017年9月11日17:19:11 Author:Marydon 一.参考链接 本篇文章的创作灵感来源于博主-奔跑的铃铛关于js中cons ...

  3. 【Datastage】函数大全

    一. 类型转换函数 类型转换函数用于更改参数的类型. 以下函数位于表达式编辑器的"类型转换"类别中.方括号表示参数是可选的.缺省日期格式为 %yyyy-%mm-%dd. 以下示例按 ...

  4. Java并发编程(三):并发模拟(工具和Java代码介绍)

    并发模拟工具介绍 ① Postman : Http请求模拟工具 从图上我们可以看出,Postman模拟并发其实是分两步进行操作的.第一步:左边的窗口,在窗口中设置相关接口以及参数,点击运行进行第二步. ...

  5. [svc]jdk1.7.0_13(系列)下载url

    蛋疼了,这个版本,找了老半天没找到 最后是同事找到的 http://download.oracle.com/otn/java/jdk/7u13-b20/jdk-7u13-linux-x64.tar.g ...

  6. 安装Eclipse插件长时间卡在 calculating requirements and dependencies

    把"Contact all update sites during install to find required software"前面的勾去掉,然后点击下一步,这样之后问题迎 ...

  7. God web

    http://my.csdn.net/yerenyuan_pku http://evilcos.me/?p=336 https://www.zhihu.com/question/21606800 st ...

  8. Git-git 忽略 IntelliJ .idea文件

    $ echo ‘.idea’ >> .gitignore $ git rm -rf .idea $ git add .gitignore

  9. CMSGC造成内存碎片的解决方法

    我们知道,CMSGC在老生代回收时产生的内存碎片会导致老生代的利用率变低:或者可能在老生代总内存大小足够的情况下,却不能容纳新生代的晋升行为(由于没有连续的内存空间可用),导致触发FullGC.针对这 ...

  10. QT .pro文件 LIBS用法详解

    在程序中需要使用到团队其它成员开发的静态库和动态库,起初是知道使用LIBS变量在在.pro文件中指定需要包含的库,但是实际使用的时候却遇到很大麻烦,但其实确实是因为自己看官方文档不太用心造成的. 下面 ...