公布項目到NPM
阿新 • • 發佈:2018-02-15
size script param 壓縮 構建 決定 gitignore pos login
進行模擬
第二步:編寫相關代碼 進行測試管理),而且會在測試失敗的時候通知到你,你也能夠把項目當前的狀態顯示在
修己安人,內聖外王
近期,在開發Node項目過程中遇到了須要類jQuery深拷貝對象的問題。去Github找了半天,並沒有符合的,於是,自己決定寫一個(mixin.js),然後推送到NPM(查看Npm相關內容。請查看<npm模塊管理器>)。以下是整個流程,在此記錄~~~
環境要求
- 安裝Node
- 安裝Npm
創建項目
第一步:在Github創建相關repository,然後進行npm init
初始化package.json。之前曾撰寫過使用commander
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
中,進而非常easy知道項目當前狀態。
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
項目面板
項目地址:https://www.npmjs.com/package/mixin.js
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 | 賦予軟體被授權人更大的權利與更少的限制 |
詳情參考:https://docs.npmjs.com/files/package.json
公布項目到NPM