nodejs中标准包的制作,上传,安装及卸载方法
一:如何制作一个标准包?
为了规范化,基本遵循CommonJS规范,首先约定:
包的使用:
- 所有模块放在一个文件夹(包名)
- 包放在当前项目中的node_modules文件夹下
- 包中定义一个index.js(文件名不可以更改)导出所有模块(出口)
- 引用包(约定大于配置)
Node.js在调用包时,首先会检查包中的package.json文件的main字段,将其作为包的接口模块,如果package.json文件的main字段不存在,那么Node.js会尝试寻找index.js或index.node作为包的接口。
以下是一个非常简单的标准包的参照:
标准包的结构:
名称 |功能 |---|---| package.js |包描述文件 bin |存放可执行文件 lib |存放JavaScript代码 doc |存放文档 test |存放单元测试用例代码 README.md |说明文档,描述包的作用和用法
如何打包生成package.json文件?
我们以下面这个还未打包的package为例:
步骤: 1.自己创建README.md说明文件,注意修改后缀名
2.在根目录package下执行命令窗口
npm init -y //自动创建package.json
当然如果想要自己手动创建就不要加 -y输入 npm init即可
name:(package) //包名:(括号内为默认值下同) 回车
version:(1.0.0) //版本
git repository: //模块的git仓库,选填。npm的用户一般都使用github做为自己的git 仓库
author: //模块的作者名
License:(ISC) //许可证 默认括号中的
IS this ok?(yes) //输入yes即可生成
二:如何发布一个包?
1)发布一个包的步骤:
当我们创建完了一个包我们便会将其上传到npm的官网上去,以供其他人来使用
第一步:在npm官网 https://www.npmjs.com/上注册一个账号
第二步:登录
在包的根目录下面执行打开dos窗口(我这里的需要上传的包为math文件夹)(找到这个文件夹所在位置,按住shift右击, 点击”在此处打开命令窗口”)
npm adduser //回车后,弹出Username:
Username: //输入你在官网注册时的用户名,回车
Password: //输入官网注册的密码,密码看不见,请确保你输的密码正确, 回车
Email:(this is Public) //输入官网注册时绑定的邮箱,回车
第三步:上传
npm publish //此处上传命令,回车
上传成功如下图:
2)发布一个包的时候容易遇到的问题:
- 1.切换的源不对,很可能你现在的源是taobao等其他来源
- 报错信息会中含有:
- only admin can publish this module
解决办法:修改源 npm config set registry http://registry.npmjs.org
查看是否切换源成功: npm config list
当跳出的信息中含有registry = "http://registry.npmjs.org/"表示切换源成功
2.你的包名与npm官网上别人上传的包重名了,会报以下错误
解决办法有两种:
1.修改你包中的package.json文件中的name(即包的名字)
2.修改你包的版本名
三:安装包
在新建的文件的根目录下执行
npm install 需要的包名 //安装包 (想要安装在当前目录下,必须先生成package.json)
npm uninstall 需要删除的包名 //卸载包
npm unpublish @ 删除发布过的版本代码 npm unpublish haha@1.0.0
在新建的文件下的根目录执行
npm install 包名 --save // 建立包依赖
nodejs中标准包的制作,上传,安装及卸载方法的更多相关文章
- asp.net 中 UEditor 图片和附件上传失败的处理方法
1.0 找到 net 文件夹下面的 web.config 配置文件,注释掉如下的两句: 2.0 Uploader文件默认属性为编译,将其属性改为内容以后重新运行程序,图片上传成功. 3.0 删除 im ...
- Html5+NodeJS——拖拽多个文件上传到服务器
实现多文件拖拽上传的简易Node项目,可以在github上下载,你可以先下载下来:https://github.com/Johnharvy/upLoadFiles/. 解开下载下的zip格式包,建议用 ...
- nodeJS中的包
前面的话 Node组织了自身的核心模块,也使得第三方文件模块可以有序地编写和使用.但是在第三方模块中,模块与模块之间仍然是散列在各地的,相互之间不能直接引用.而在模块之外,包和NPM则是将模块联系起来 ...
- ueditor1.3.6jsp版在struts2应用中上传图片报"未找到上传文件"解决方案
摘要: ueditor1.3.6jsp版在struts2应用中上传图片报"未找到上传文件"解决方案 在struts2应用中使用ueditor富文本编辑器上传图片或者附件时,即使配置 ...
- Maven配置jar(war)包自动打包上传Maven服务器的配置
Maven配置jar(war)包自动打包上传Maven服务器的配置 创建jar(war)包工程 创建一个maven工程 在工程中穿件一个测试类 配置pom.xml <distributionMa ...
- SpringMVC中使用 MultipartFile 进行文件上传下载及删除
一:引入必要的包 <!--文件上传--> <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fil ...
- 发布新的模型类包(用于上传到 NuGet 服务器上)
生成包文件: 1.修改了模型类之后,在项目上点击右键,在列表菜单中选择 “编辑 …….csproj”,然后将里面的三个版本号都换成新的版本号. 2.右键项目,点击“打包” 3.复制输出信息中生成的包的 ...
- 【javascript】html5中使用canvas编写头像上传截取功能
[javascript]html5中使用canvas编写头像上传截取功能 本人对canvas很是喜欢,于是想仿照新浪微博头像上传功能(前端使用canvas) 本程序目前在谷歌浏览器和火狐浏览器测试可用 ...
- 在MVC中利用uploadify插件实现上传文件的功能
趁着近段的空闲时间,开发任务不是很重,就一直想把以前在仓促时间里所写的多文件上传功能改一下,在网上找了很多例子,觉得uploadify还可以,就想用它来试试.实现自己想要的功能.根据官网的开发文档,同 ...
随机推荐
- SRM 146 DIV1 800
Problem Statement The purpose of a roundabout is to control the flow of traffic at a busy inter ...
- linux+php+apache web调用python脚本权限问题解决方案
lamp : linux + apache + mysql + php 在上篇随笔中linux+php+apache调用python脚本时出现的问题的根本原因是:apache运行时使用的apache用 ...
- 在 .NET 4.0 中使用 .NET 4.5 中新增的特性(CallerMemberNameAttribute/CallerFilePathAttribute/CallerLineNumberAttribute)
介绍 标题中所说的三个特性 CallerMemberNameAttribute / CallerFilePathAttribute / CallerLineNumberAttribute 我们统称为调 ...
- LeetCode Bulb Switcher 319
变换灯泡颜色 There are n bulbs that are initially off. You first turn on all the bulbs. Then, you turn off ...
- Network服务器
1.授权服务器与非授权服务器:大多数网游都是授权服务器,用户无法修改数据.
- 利用qmake生成Makefile文件
在linux下写程序,免不了要写Makefile文件,用automake,总感觉比较麻烦,linux人喜欢做麻烦的事,以显得风格迥异. 其实用qmake生成Makefile文件相当简单. 1 装好qm ...
- docker安装
系统要求:需要一个64位的centos7操作系统和版本3.10或更高版本的Linux内核 开始安装: uname -r //查看内核版本yum -y update //更新系统更新到最新 #安装d ...
- MES开发学习一
/*开发批次的当前信息查询界面,显示字段包括批次名,产品名,产品版本,批次数量,开始原因,所有者,当前工序,工艺路线, 工艺路线版本,车间,并能通过批次名,产品名,工序进行过滤和按照批次名正序排列.* ...
- 网络编程——URL编程
URL:是统一资源定位器的简称,它表示Internet某一资源的地址.通过URL我们可以访问Internet上的各种网络资源,比如最常见的www,ftp站点.浏览器通过解析给定的URL可以在网络上查找 ...
- 又一种XML的解析方法
[Fact(DisplayName="用户名为空")] public void Should_UsernameEmpty() { var paras = new Dictionar ...