1. 程式人生 > >釋出專案到NPM

釋出專案到NPM

修己安人,內聖外王

最近,在開發Node專案過程中遇到了需要類jQuery深拷貝物件的問題,去Github找了半天,並沒有符合的,於是,自己決定寫一個(mixin.js),然後推送到NPM(檢視Npm相關內容,請檢視<npm模組管理器>),下面是整個流程,在此記錄~~~

環境要求

  • 安裝Node
  • 安裝Npm

建立專案

第一步:在Github建立相關repository,然後進行npm init 初始化package.json。之前曾撰寫過使用進行模擬npm init操作,請參考:使用Node.js構建命令列工具
第二步:編寫相關程式碼

注意:對於引入方式進行處理

(function (global, name, factory) {
    "use strict";

    if (typeof exports === 'object' && typeof module !== 'undefined') {
        module.exports = factory();
    } else if (typeof define === 'function' && (define.amd || define.cmd)) {
        define(factory);
    } else {
        global[name] = factory.apply(this
); } }(this, "專案名稱", function () { // 邏輯編寫 }));

第三步:釋出模組
1. 在npm註冊賬號:https://www.npmjs.com/signup
2. 在本地登入自己剛註冊的賬號 npm login
3. 釋出模組 npm publish

持續整合

目前Github已經整合了持續整合服務travis,我們只需要在專案中新增.travis.yml檔案,在下一次push之後,travis就會定時執行npm test來測試你的專案(該專案中,使用mocha進行測試管理),並且會在測試失敗的時候通知到你,你也可以把專案當前的狀態顯示在README.md

中,進而很容易知道專案當前狀態。

language: node_js
node_js:
  - "4"

壓縮打包

專案中,使用gulp進行壓縮程式碼

var gulp = require('gulp');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');

gulp.task('default', function () {
    gulp.src('src/*.js')
        .pipe(uglify())
        .pipe(rename({ extname: '.min.js' }))
        .pipe(gulp.dest('dist/'))
});

附:

專案結構

mixin.js
├─┬ dist
│ └── mixin.min.js
├─┬ src
│ └── mixin.js
├─┬ test
│ └── test.js
├── .gitignore
├── .npmignore
├── .travis.yml
├── gulpfile.js
├── LICENSE
├── package.json
├── README.md

專案面板

package.json關鍵欄位說明

package.json檔案必須是一個JSON,而非JavaScript物件。更詳細內容,請檢視<package.json>

  • name:最重要的欄位之一,專案名稱(少於214個位元組)。沒有nameversion不能進行安裝;
  • version:最重要的欄位之一,專案版本。沒有nameversion不能進行安裝;修改專案程式碼的同時需要修改該version欄位;
  • description:專案描述,幫助人們通過npm search發現該專案;
  • keywords:關鍵字,幫助人們通過npm search發現該專案;
  • license:開源宣告;
型別 說明
General Public License,簡稱GPL 執行、複製軟體的自由,發行傳播軟體的自由,獲得軟體原始碼的自由,改進軟體並將自己作出的改進版本向社會發行傳播的自由。
BSD 可以自由的使用,修改原始碼,也可以將修改後的程式碼作為開源或專有軟體再發布
Massachusetts Institute of Technology,簡稱MIT 賦予軟體被授權人更大的權利與更少的限制