修己安人,内圣外王

近期,在开发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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGlnYW5nMjU4NTExNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">

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 赋予软体被授权人更大的权利与更少的限制

详情參考:https://docs.npmjs.com/files/package.json

最新文章

  1. 2-部署phpmyadmin
  2. 刚知道的android属性
  3. MyEclipse10安装Svn插件的几种方法
  4. 俄罗斯画师Mikhail Rakhmatullin作品
  5. Winmail.dat(TNEF) issue on outlook
  6. C语言笔试常考知识点
  7. paip.常用汉字形声字大全3500字
  8. JS框架之收集专帖
  9. Spring3 Security 中配置会话管理
  10. 转JS技巧
  11. xcode新建项目介绍
  12. PHP 判断几秒前,几分钟,几小时前
  13. P2物理引擎中文文档
  14. Clang-Format: Visual Studio Style
  15. MySQL 数据类型和约束(外键是重点&#128580;)
  16. NAT(Network Address Translation)
  17. iptables nat 技术转发
  18. Windows 下最佳的 C++ 开发的 IDE 是什么?
  19. Vue-详解设置路由导航的两种方法: &lt;router-link :to=&quot;...&quot;&gt; 和router.push(...)
  20. ZOJ 3962 Seven Segment Display(数位DP)题解

热门文章

  1. 【JSOI 2008】 球形空间产生器
  2. Java访问HTTPS时证书验证问题
  3. Python3爬虫--两种方法(requests(urllib)和BeautifulSoup)爬取网站pdf
  4. php auto_load mvc 接口框架(原创)
  5. [TB-Technology] 淘宝在数据处理领域的项目及开源产品介绍
  6. 对JVM还有什么不懂的?一文章带你深入浅出JVM!
  7. Entity Framework 的懒加载、预先加载、显示加载
  8. 第4章 部署模式 Deployment Plan(部署规划)
  9. ADODB.RecordSet常用方法查询
  10. hdu1811 Rank of Tetris 拓扑排序+并查集