前些日子使用YEOMAN写了一个独立的前端脚手架,今天有时间,整理一下。第一次使用,还有不少值得改进的地方,但愿各位大神指正。css
YEOMAN中文官网html
全局安装须要的工具前端
npm install -g yo npm install -g generator-generator
执行,执行以前并不须要本身新建文件夹,yo generator
会帮助咱们建好文件夹jquery
yo generator
在设置了一系列问题以后webpack
注:项目名称必须是以
generator-
开头,协议选择MIT
git
咱们获得了以下目录github
generator-test ├── LICENSE ├── README.md ├── __tests__ │ └── app.js ├── generators │ └── app │ ├── index.js │ └── templates │ └── dummyfile.txt └── package.json
generators/templates/
是默认存放文件的目录,把全部模版文件放在这个目录下,
下面是我写的前端脚手架目录树web
generator-jake-front ├── LICENSE ├── README.md ├── __tests__ │ └── app.js ├── generators │ └── app │ ├── index.js │ └── templates │ ├── README.md │ ├── gulpfile.js │ ├── package.json │ ├── src │ │ ├── app │ │ │ ├── header.inc │ │ │ └── index.html │ │ ├── css │ │ │ ├── lib │ │ │ │ ├── animate.scss │ │ │ │ ├── layer │ │ │ │ │ ├── layer.scss │ │ │ │ │ └── mobile │ │ │ │ │ └── layer.scss │ │ │ │ └── reset.scss │ │ │ ├── mix │ │ │ │ └── page.scss │ │ │ └── style.scss │ │ ├── images │ │ │ └── layer │ │ │ ├── icon-ext.png │ │ │ ├── icon.png │ │ │ ├── loading-0.gif │ │ │ ├── loading-1.gif │ │ │ └── loading-2.gif │ │ └── js │ │ ├── lib │ │ │ ├── jquery.fullPage.js │ │ │ ├── jquery.min.js │ │ │ └── layer │ │ │ ├── layer.js │ │ │ ├── mobile │ │ │ │ ├── layer.js │ │ │ │ └── need │ │ │ │ └── layer.css │ │ │ └── skin │ │ │ └── default │ │ │ ├── icon-ext.png │ │ │ ├── icon.png │ │ │ ├── layer.css │ │ │ ├── loading-0.gif │ │ │ ├── loading-1.gif │ │ │ └── loading-2.gif │ │ └── main.js │ ├── webpack.config.dev.js │ └── webpack.config.pro.js └── package.json
编辑/generators/app/index.js
npm
下面是个人配置json
var path = require('path'); var chalk = require('chalk'); // 不一样颜色的info var yeoman = require('yeoman-generator'); var yosay = require('yosay'); // Yeoman弹出框 const fs = require('fs'); module.exports = yeoman.extend({ info: function() { this.log(chalk.green( 'I am going to build your front templates!' )); }, generateBasic: function() { // 按照本身的templates目录自定义 // 拷贝目录 this.fs.copy(this.templatePath("src"), this.destinationPath("src")); // 拷贝文件 this.fs.copy(this.templatePath("package.json"), this.destinationPath("package.json")); }, generateClient: function() { this.sourceRoot(path.join(__dirname, 'templates')); this.destinationPath('./'); }, install: function() { // 安装依赖 this.installDependencies({ skipInstall: this.options['skip-install'] }); }, end: function() { this.log(yosay( 'Your front templates has been created successfully!' )); } });
因为咱们在本地开发,并不知道用起来怎么样,因此可使用npm link
命令,至关于在全局安装了此脚手架,而后在新文件夹中执行yo
,选择本身的脚手架,即可以测试
发布须要一个npm的帐号,若是没有使用npm adduser
建立;若是已有帐号,运行npm login
登录。而后到项目根目录下,运行npm publish
就能够发布了。若是更新后从新发布,注意修改根目录下的package.json
文件中的版本号。