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