前端工程化

工程結構

├── src
├── dist
├── example
├── docs
├── index.js
├── package.json
├── README.md
├── .gitignore
└── .npmignore

src - 項目的源碼,開發階段在這個目錄進行dist - 存放構建以後的文件的目錄,若是不須要引用源碼,則能夠直接引用該目錄下的文件。
examples - 示例,調用方法示例。
docs - 項目文檔,若是文檔內容太多,不方便所有寫到 README 中,能夠下 docs 目錄下新建 Markdown 文件。
test - 測試,單元測試文件
index.js - 項目入口文件,package 中的入口文件默認指向此文件。package.json - npm 配置,包含項目名稱、版本、依賴、做者、運行命令等基本信息。
README.md - 項目說明文件,gitlab/hub、npm 等平臺會默認展現該文件的內容,做爲項目介紹。
.gitignore - 配置不須要提交的 git 上的文件,一般爲編譯生成的文件和目錄、編輯器/IDE 的配置文件。
.npmignore - 配置不須要提交到 npm 上的文件。
.npmrc - 項目級別的 npm 配置,用於設置 registry。node

README.md

README.md 文件應該以下內容:git

示例項目npm

  1. 解決什麼問題
    簡介的描述模塊的做用。
  2. 如何調用
    儘可能給出完整可執行的代碼,若是給出僞代碼,也儘可能省略常識性內容。
  3. 配置項
  4. 已知問題 & notes
    在什麼環境下會出現什麼問題,如何規避。
  5. 迭代計劃

單元測試

組件構建以前默認調用 'npm chr-test' 進行測試。json

examples

項目中應該包含一個覆蓋項目大部分 API 的實例程序,若是文檔表述不清楚,則調用者能夠按照實例程序的方式來使用。
若是是不一樣種類的例子,建議分文件夾存放。api

npm script

在自動構建時,構建程序會調用 npm scripts 中的命令。
也建議將項目常見的操做寫成 npm script。
保留以下命令:
chr-build:
chr-test:瀏覽器

組件建立腳手架

generator-pkg

chr-npm 模塊腳手架 @chr/generator-pkg(http://npm.corp.chinahr.com/package/@chr/generator-pkg)bash

安裝

腳手架基於 Yeoman(http://yeoman.io) 開發,因此須要先安裝 Yeoman.服務器

bash
npm --version 
npm install -g yo
npm install -g @chr/generator-pkg --registry http://npmapi.corp.chinahr.com


而後就可使用腳手架生成模塊框架了

bash
mkdir foo
cd foo
yo @chr/pkg
併發

選項說明

name

項目名稱,默認爲文件夾名稱,只能用中文,也會用於 git 上的項目名稱,以及 git 的 repo url,因此不能出現除 以外的符號。框架

desc

項目描述,用於 package.json 中的 desc 字段和 git 上的項目描述,支持中文。

type

項目類型,適用於瀏覽器或 node, 或者二者都合適,目前沒什麼做用

author

做者,英文,用於 package.json 中的 author, 儘可能使用 OA 用戶名

腳手架作了什麼事情

  1. 收集用戶輸入,肯定項目基本信息
  2. 複製模板到項目中,並替換其中的變量
  3. 在 http://10.0.0.236/npm 分組下建立同名項目
  4. 在項目目錄下初始化 git repo,並設置上一步中的 repo url 爲 git remote origin
  5. 將項目目錄下現有文件 commit, 並 push 到 origin/master
  6. 完成項目生成

問題

  1. 若是遠程服務器上存在同名項目,腳手架 3 步之後會失敗,因此務必保證項目不要重名
  2. 項目中含有 example 字樣,在 gitlab 上會 404,不能 100% 復現

 組件發佈

因爲 cnpmjs.org 的限制,只有在配置文件中寫明的用戶纔可以發佈組件。

因此,考慮到這個用戶名單維護的成本,不計劃使用每一個用戶均可以發佈的方式。

發佈方案

組件發佈藉助 gitlab 和 jenkins, 在組件發佈工具中觸發發佈操做,發佈工具會從對應 repo 中拉取代碼,執行構建,併發布到 npm 倉庫。

發佈前的改動

根據本次改動,更新 README.md 與 examples 等信息,而後根據改動類型,對修改版本號,版本號更改要嚴格遵循

相關文章
相關標籤/搜索