开发自己的NPM包

注册一个npm账号

进入网址https://www.npmjs.com 注册一个npm账号。

开发自己的NPM包

 

开发自己的NPM包

 

 

初始化仓库

每一个npm包都需要一个package.json文件,进行常规配置。

首先进入需要发布npm的目录,输入

npm init

开发自己的NPM包

 

进行包初始化,自动生成一个package.json文件,填写一些简单的选项,包括: 包名、版本号、主入口文件、描述、作者、脚本 、git仓库等。

name:填写你这个包的名字,默认是你这个文件夹的名字。不过这里要着重说一下,最好先去npm上找一下有没有同名的包。最好的测试方式就是,在命令行里面输入npm install 你要取的名字,如果报错,那么很好,npm上没有跟你同名的包,你可以放心大胆地把包发布出去。如果成功下载下来了。。。那么很不幸,改名字吧。。。

version:你这个包的版本,默认是1.0.0

description:其实我也不知道是什么,按回车就好了。。。,这个用一句话描述你的包是干嘛用的,比如我就直接:‘a plugin for express.register routes base on file path’

entry point:入口文件,默认是Index.js,你也可以自己填写你自己的文件名

test command:测试命令,这个直接回车就好了,因为目前还不需要这个。

git repository:这个是git仓库地址,如果你的包是先放到github上或者其他git仓库里,这时候你的文件夹里面会存在一个隐藏的.git目录,npm会读到这个目录作为这一项的默认值。如果没有的话,直接回车继续。

keyword:这个是一个重点,这个关系到有多少人会搜到你的npm包。尽量使用贴切的关键字作为这个包的索引。我这个包嘛,第一是在express下工作的,然后又是一个插件plugin,然后又是一个注册路由route用的,而这个路由又是基于文件目录dir,所以很好就得出我的包的索引关键字。

author:写你的账号或者你的github账号吧

license:这个直接回车,开源文件来着。。。

然后它就会问你Are you ok?

回车ok

 

 

文件内容如下:

{

  "name": "project1",

  "version": "1.0.0",

  "description": "一个npm测试包",

  "main": "index.js",

  "scripts": {

    "test": "echo \"Error: no test specified\" && exit 1"

  },

  "author": "yeluo",

  "license": "ISC"

}

可以看到,在package.json中指定主入口文件为index.js,那么,就得在项目下创建一个名为index.js的文件。比如:

function hello(name){

  console.log("hello "+ name);

}

exports.hello = hello;

测试此包

新建文件夹,在文件夹下创建node_modules,将整个文件夹丢到node_modules目录下,在node_modules同级目录下使用npm init 创建 package.json

{

  "name": "npmtest",

  "version": "1.0.0",

  "description": "",

  "main": "index.js",

  "dependencies": {},

  "devDependencies": {},

  "scripts": {

    "test": "echo \"Error: no test specified\" && exit 1"

  },

  "author": "",

  "license": "ISC"

}

创建test.js

var h = require('project1');

h.hello('yeluovinager');

开发自己的NPM包

执行node test

开发自己的NPM包

文件结构:

npmtest/ # 测试项目目录

    node_modules/ # 包目录

        project1/ # 插件目录

            index.js # 插件入口文件

            package.json # 插件配置文件

    test.js # 测试文件

package.json # 测试配置文件

 

在执行完npm init这个步骤之后,把代码扔进这个包里面后,就形成了一个本地的包,可以直接把这个包扔到项目里面node_module这个文件夹里面的,然后在你的项目里面就可以直接:

 var a=require('你的包名');

直接使用包名引入,不用文件路径了,就像引入fs或者http模块一样

发布一个npm包

到需要发布的包目录下

使用之前注册的npm 账号密码登录。发布npm

npm publish

 

开发自己的NPM包

 

切换官方源

npm config set registry https://registry.npmjs.org/

 

切换淘宝源

npm config set registry https://registry.npm.taobao.org

 

查看源 npm config get registry

 

再发布(这里重复操作新建一个包project-yeluovinager)

开发自己的NPM包

发布后可在自己的npm主页看到

 

开发自己的NPM包

开发自己的NPM包

更新npm包

如果之后修改过此包,需要修改package.json中的版本号字段version,使其大于当前版本,然后npm publish即可。

 

如果未更改版本号,会报错:

开发自己的NPM包

 

 

删除npm包

$ npm unpublish

$ npm unpublish --force

安装使用npm包

跟以前安装npm包同样的使用

 

npm i <packageName>

比如安装刚才发布的包:

 

npm i yeluo-vinager --save

使用刚才发布的包:

 

let a = require(' yeluo-vinager')

a.hello('qzy')

执行node index即可看见输出了hello qzy