简单的来讲,Slush 就是一个脚手架生成工具。什么?脚手架?这是什么鬼?嗯,脚手架嘛,天然是这个样子咯~javascript
什么?你问的是编程中的脚手架呀?啊,这么说吧。身为一个前端开发者,每次新建一个项目的时候是否是要建立好多个文件夹、配置文件?写个文档是否是要建立好多个目录?然而每一个项目的结构和配置文件都大同小异,是否是早已繁琐感受人生无望,失去了活着的意义?前端
就在这个时候,Slush 横空出世,可以让你轻松搞定这些繁琐的事情,从新找回人生的意义,你就说吼不吼啊。今后麻麻不再用担忧我成天都在忙着建立文件夹啦。java
嗯。Yeoman 确实也是一个很好用的脚手架工具,历史悠久。然而它以 Grunt 为基础工具,上手难度大大提升。在轮子层出不穷的前端领域早已经是风前残烛。而 Slush 则是基于 Gulp 的 『流式』思想做为基础工具,当你在作定制化脚手架时,Gulp 简单易用的特色则能让你轻轻松松搞定。react
噢,这么屌?那该怎么用呢?git
好啦,废话很少说啦,咱们赶忙来趁着这个热乎劲看看怎么使用吧。github
首先,你得有 NodeJS 环境,什么?连 NodeJS 都没装?赶忙回家洗洗睡吧。若是你已经有了呢,你就能够经过 npm 直接将 slush 安装到全局环境下啦:npm
npm install -g slush复制代码
安装完了以后,你能够执行下面这行命令来确保安装成功:编程
slush -v复制代码
若是你能看到输出了一个版本号,就说明已经安装成功啦。下面咱们就来看一下如何使用吧。json
在使用 slush 建立项目以前,你得先安装一些别人开发好的脚手架。安装好脚手架以后才能根据脚手架生成约定好的项目结构哟。gulp
咦?不知道有什么脚手架?快来 大厅 里找找吧。
很好,你已经找到了本身喜欢的脚手架了,咱们快来安装它吧。打住,提醒你一下,脚手架要安装到全局环境下才有效哟。
npm install -g slush-react-starter-kit复制代码
如今咱们已经安装好须要的一切了,终于能够开始建立项目啦。
首先,建立一个项目文件夹并进入文件夹中:
mkdir my-first-slush-project
cd my-first-slush-project复制代码
其次,执行 slush 生成命令:
slush react-starter-kit复制代码
react-starter-kit
是什么鬼?咱们安装的明明是 slush-react-starter-kit
呀。没错,在生成项目的时候,slush 后面跟的脚手架名字中是不带 slush
关键词的。就是这么任性。
固然了,可能你翻遍了整个大厅都没找到本身想要的,迫切想要本身定制一个脚手架怎么办呢?且听我慢慢道来。
其实很简单啦,Slush 脚手架就是一个普通的 npm package,惟一须要注意的有这么几点:
slush-*
的方式slushfile.js
文件templates
文件夹中假设你已经按照上面这些约定作好了准备工做,那么接下来咱们就能够搞一件大新闻啦。
首先,你要将模板文件(就是运行脚手架以后生成的项目文件)所有放到 templates
文件夹中
前面已经说到 Slush 是基于 Gulp 做为基础工具的,因此你只须要按照 Gulp 的使用方法在 slushfile.js
编写任务流就能够啦。
咦,好像有点不太对,既然是用 Gulp,那么 gulpfile.js
文件呢?
这里确实是不须要 gulpfile.js
文件啦,由于 Gulp 任务都在 slushfile.js
文件中写啦,Slush 会帮你自动驱动 Gulp 的啦。
好了,那么 slushfile.js
文件中的到底该怎么写呢?放着我来,小哥亲自给你示范一下:
var gulp = require('gulp'),
install = require('gulp-install'),
conflict = require('gulp-conflict'),
template = require('gulp-template'),
inquirer = require('inquirer');
gulp.task('default', function (done) {
inquirer.prompt([
{
type: 'input',
name: 'name',
message: 'Give your app a name',
default: gulp.args.join(' ') // 从运行参数中获取值做为 name 的默认值。
},
{
type: 'confirm',
name: 'moveon',
message: 'Continue?'
}
]).then(function (answers) {
if (!answers.moveon) {
return done();
}
gulp.src(__dirname + '/templates/**') // 使用脚本所在的目录做为相对路径。
.pipe(template(answers)) // Lodash 模板支持,能够方便的在模板中进行插值。
.pipe(conflict('./')) // 当文件冲突时,询问是否覆盖。
.pipe(gulp.dest('./')) // 输出到执行命令的当前文件夹中。
.pipe(install()) // 使用 `bower install` 或 `npm install` 执行安装操做。
.on('end', function () {
done(); // 告知完成。
});
});
});复制代码
PS: 去哪里发现诸如 [inquirer](https://github.com/SBoudrias/Inquirer.js)
这么好用的 package 呢?你能够关注下 github.com/sqrthree/aw… 哟。
如今就已经搞定啦,接下来怎么使用呢?由于 Slush 调用的是全局环境下的脚手架,可是目前咱们的脚手架并不在全局环境中,然而你还没发布这个脚手架,不能直接工做 npm install -g
进行全局安装,因此显然是不!能!用!啦!哈!哈!哈!
别着急砸电脑嘛,咱们还有一个办法捏。那就是经过 npm link
命令将当前脚手架挂载到全局环境中啦。你只须要在当前文件夹中执行 npm link
,搞定,收工(前提是 package.json
已经写好)。而后就能够随便找个文件夹安装咱们上面说的方法使用脚手架啦。
尽管自定义一个脚手架已经很是方便了,可是细心的你会发现几乎每一个脚手架之间 slushfile.js
也都大同小异,只是 templates
文件夹中的模板文件不同,因此呢,你懂得😉。
slush-generator 就是这么一个让咱们来生成 Slush 脚手架的脚手架。有了它,建立自定义脚手架的时候异常方便。
npm install -g slush-generator复制代码
mkdir my-slush-generator
cd my-slush-generator复制代码
slush generator复制代码
以后会让你回答一些问题,在回答过以后,你的自定义脚手架目录就已经生成好啦。接下来只须要在 templates
文件夹中放置你须要的文件就行了。
直接输入 slush
便可看到已经安装过的脚手架:
➜ slush
[slush] Installed generators
[slush] ├── generator (0.2.11)
[slush] └── koa2 (0.1.0)复制代码
怎么样?是否是已经火烧眉毛的想要尝试了?
喔,对了,少侠留步,差点忘了告诉你一件事情:
查看更多文章请关注 github.com/sqrthree/sq…