開發屬於自己的yeoman腳手架(generator-reactpackage)

分類:IT技術 時間:2016-10-15

自從前後端開始分離之後,前端項目工程化也顯得越來越重要了,之前寫過一篇搭建基於Angular+Requirejs+Grunt的前端項目教程,有興趣的可以點這裏去看

但是有些項目可以使用這種方式,但有些卻不太適合,或者我們就是想要去嘗試新的框架。比如最近我就嘗試著使用了webpack+react+es6的方式開發項目,感覺很不錯,然後很多項目都用了這種方式。所以為了不需要每次開發的時候都從頭開始新建文件,就想著能不能弄個工具,使用命令能夠快速的生成這樣一套跑的通的項目模版,正好,有個工具叫yeoman

本篇文章看點:

  • 教你使用yeoman快速開發自己的腳手架。

  • 介紹作者編寫的generator-reactpackage腳手架模版,此項目的開發基於webpack+react+es6,項目功能包含:

  • 啟動本地服務,默認監聽端口8888

  • css文件能自動補全css3屬性的前綴

  • 包含路由功能(react-router)

  • 使用命令npm run dev啟動服務,修改保存文件的時候瀏覽器會自動刷新(如果不想要實時刷新的功能,將webpack.config.js文件的devServer配置改為inline: false

  • 使用npm run build打包文件,js和css分開打包,並且默認會壓縮文件

開發腳手架

環境準備

安裝或者更新一下你的node和npm

npm install -g n  //首先安裝n模塊
n stable   //升級node.js到最新穩定版
n 5.0.0   //或者指定版本升級
node -v   //檢查更新是否成功

然後安裝yeoman

npm install -g yo

創建目錄

新建一個名為generator-xxx(yeoman腳手架命名規範)的文件夾,我這裏叫generator-reactpackage。然後在目錄下執行npm init創建package.json文件。修改為:

{
  "name": "generator-reactpackage",
  "version": "0.0.4",
  "description": "基於ract+webpack的項目目錄快速生成器",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/luckykun/generator-reactpackage.git"
  },
  "keywords": [
    "yeoman-generator"
  ],
  "author": "luckykun",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/luckykun/generator-reactpackage/issues"
  },
  "homepage": "https://github.com/luckykun/generator-reactpackage",
  "dependencies": {
    "chai": "^3.3.0",
    "chalk": "^1.1.1",
    "fs-extra": "^0.24.0",
    "mocha": "^2.3.3",
    "yeoman-generator": "^0.24.1",
    "yosay": "^1.0.5"
  }
}

註意:package.json的信息一定要盡可能完整,不然可能上傳不到generator-lists

然後在此目錄下新建generators->app->index.jsgenerators-app-templates,如下圖所示:

  • generator-reactpackage是整個npm包的項目文件夾。

  • templates目錄裏面就是我們最後要用到的項目模版文件,裏面的內容是一個完整的前端項目,可以自定義。

  • index.js是開發腳手架的主要邏輯文件。

開始開發

然後編輯index.js文件:

var path = require('path');
var chalk = require('chalk');    //不同顏色的info
var util = require('util');
var yeoman = require('yeoman-generator');
var yosay = require('yosay');    //yeoman彈出框
var path = require('path');
var Reactpackage = yeoman.Base.extend({
    info: function() {
        this.log(chalk.green(
            'I am going to build your app!'
        ));
    },
    generateBasic: function() {  //按照自己的templates目錄自定義
        this.directory('src', 'src');    //拷貝目錄
        this.directory('data', 'data');
        this.copy('package.json', 'package.json');   //拷貝文件
        this.copy('index.html', 'index.html');
        this.copy('README.md', 'README.md');
        this.copy('webpack.config.js', 'webpack.config.js');
    },
    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 app has been created successfully!'
        ));
    }
});
module.exports = Reactpackage;

上面這個文件就是主要邏輯部分了。至於具體的語法,可以參考這篇文章。快速搭建基於yeoman快速編寫腳手架工具

上傳

開發完成之後,我們就可以將generator-reactpackage這個項目上傳到npm官網。步驟如下:

npm adduser  //如果沒有賬號,用此命令註冊
npm login   //如果有賬號,用此命令登陸
npm publish --access=public     //上傳到npm官網

上傳成功後會提示:

+ generator-reactpackage@0.0.4

然後你可以訪問http://yeoman.io/generators/這裏去搜索一下自己的包,有沒有上傳成功,比如搜索reactpackage就會出現我上傳的腳手架。如下圖:

註意:

  • 上傳到npm官網之前需要先將腳手架項目上傳到github

  • 腳手架項目的package.json文件一定要盡可能詳細,比如git主頁,readme文件鏈接等等

如果你能搜到自己上傳的腳手架了,OK,開發基於yeoman的腳手架工具就到這裏結束了。有興趣的同學可以去看看我編寫的generator-reactpackage源碼,喜歡的同學順便來個star~~哈哈,感謝~

使用腳手架(generator-reactpackage)

首先確保自己安裝了nodejs,然後全局安裝yeoman

npm install -g yo

然後直接安裝腳手架

npm install -g generator-reactpackage

在合適的地方新建一個文件夾,在文件夾下運行:

yo reactpackage

然後就會在此目錄下生成以下目錄結構:

├── data
│   └── test.json
├── src
│   ├── components
│   │   └── App.js
│   ├── images
│   │   └── yeoman.png
│   ├── styles
│   │   └── app.scss
│   ├── vendor
│   │   └── jquery.js
│   ├── views
│   │   └── home.html
├── node_modules
├── index.html
├── package.json
└── webpack.config.js

細心的同學可能已經發現,其實這裏生成的內容就是我們腳手架中定義的templates目錄下的內容。

然後使用以下命令:

npm run dev    //項目開發過程使用,啟動服務,實時刷新
npm run build    //開發完成之後打包文件(js、css分開打包)

註意:

  • 本項目默認監聽端口是8888,所以在瀏覽器輸入 http://localhost:8888 就能看到效果了

  • 如果執行上述命令提示錯誤:Error: getaddrinfo ENOTFOUND localhost,在host文件裏面添加127.0.0.1 localhost即可

  • 監聽端口和實時刷新的功能都能在webpack.config.js文件中修改配置

  • 如果項目運行正常,會看到如下效果:

結語

可以看到,定義一個自己常用的腳手架騎士挺簡單的,還有更多的功能有待探索。generator-reactpackage是一個基於webpack+react+es6開發的項目模版,有需要用到這個模版的同學就趕快安裝用起來吧。

另外,它的源碼已經上傳到github上,喜歡generator-reactpackage的同學順便給個star,多謝~~~


Tags: 開發項目 瀏覽器 版本升級 壓縮文件 腳手架

文章來源:


ads
ads

相關文章
ads

相關文章

ad