终端创建
创建文件夹,打开文件夹,
npm init //开始创建,或者是npm init -y 这是直接自动生成package.json文件,那个是手动。
name就是包的名字,自己去设计,最好是搜索很容易,最关键的是没占用,跟域名一个道理,占用了就报错了。
version 就是版本,每一次修改保存,版本号都要变的。
description对这个包的描述
entry point默认运行文件
剩下的可以不用管,后续直接修改package.json文件也可以的。
发布流程
刚刚填的信息都有的。后续可以补充的。可以再终端输入npm init命令:
再看看文件改了没
里面的main就是包作用的入口文件,默认的是index.js。所以我们需要有这样一个文件的。创建,,,
路径啊,文件内容啊,如图
这里只是简单地学着发布上线如何的。不深究的。
如何发布?
发布到npm,就要先登录自己的账号,然后再发布的。
我先转到国外的正规地址,免得报错了,如果有错,可能就是不是官网地址而是国内山寨的那个下载地址。
登录了,就发布吧,
npm publish
问题又有了,报错,,,提示说这个包的名字已经存在了,不行的,域名也一样。
所以我就回package.json文件把文件名改一下,最好是名字不错,容易被索引,而且没被占用。改成weather-do-cli,再发布试试。
成功了。
但是没有使用说明啊,开始写使用说明,再回到文件目录下,新建文件README.md,如图,编辑:
改了,就要重新发布,发布的版本就要改一下了,1.0.1。
别人如何用呢??
演示一下。。。
细化如何使用
先创建一个作用对象的文件,命令操作如图:打开这个index.js文件去调用这个包操作试试看,,,
这时候自己想想,在终端输入node index.js可以吗?
肯定不行啊,这个npm包你还没有安装到本地目录下,先去安装,教程都说了的,,,
test目录下加载了node_modules文件了。
这时候,才可以用这个包了。
node index.js
输出了这个包里的index.js的那个'haha',成了吧!
这个时候,这个包只能引入到目录文件用,我想像http-server一样当成命令去用,怎么办?
包如何变成命令,再在终端全局调用
步骤很简单,正好对应了它的原理。
在包的package.json文件里加入
"bin":{
"my-weather":"./index.js"
}
有什么阴谋?这句话的意思是,一旦全局安装,-g 形式安装,系统看到这句话,就会把下载模块放到(mac的)usr/local/lib/node_module/下,这里是包的储存地址,调用包的时候,输入一个命令,这个命令就去usr/local/bin/里找对应的标签名,这个标签是个指针指向包文件,所以,除了下载了包,必须还在bin里生成了一个指针指向这个包,这个指针在这里就是my-weather。bin里的指针都是环境变量,全局视野的。
同时,要告诉系统这个命令是要在node环境下运行,所以,在包的index.js首部加入
#!/usr/bin/env node
有了这句话,输入命令时前面就不需要加node了。
然后,再更新一下版本号,发布一下。
测试一下,随便一个路径,全局安装:
看看安装的那些点,满满的都是套路啊。
试一试,
命令是bin里设置的键值,,,
my-weather
完成了。。。。