原文:https://segmentfault.com/a/1190000013940567

什么是NPM?

NPM是随同NodeJS一起安装的javascript包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:

  1. 允许用户从NPM服务器下载别人编写的第三方包到本地使用。

  2. 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。

  3. 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

发布前的准备

1. 注册一个npm账号

前往NPM官网进行注册

2. 创建一个简单的包

在本地创建一个项目文件夹sugars_demo (名字自己取,不要和NPM上已有的包名重复冲突就好) 然后通过终端进入文件夹(路径每个人不一样)

  1. cd sugars_demo

接着可以通过命令创建一个包信息管理文件package.json

  1. npm init

一路回车或根据包的内容来填写相关信息后,package.json内容大概如下

  1. {

  2.  "name": "sugars_demo",

  3.  "version": "1.0.0",

  4.  "description": "A demo",

  5.  "main": "index.js",

  6.  "scripts": {

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

  8.  },

  9.  "repository": {

  10.    "type": "git",

  11.    "url": ""

  12.  },

  13.  "keywords": [

  14.    "sugars",

  15.    "demo"

  16.  ],

  17.  "author": {

  18.    "name": "sugars",

  19.    "email": "343166031@qq.com"

  20.  },

  21.  "license": "MIT"

  22. }

接着在sugars_demo文件夹里创建一个index.js文件,然后简单敲几行代码

  1. ;(function (global, factory) {

  2.  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :

  3.    typeof define === 'function' && define.amd ? define(factory) :

  4.      global.moduleName = factory()

  5. }(this, (function () {

  6.  var test = {

  7.    sayHi: function () {

  8.      console.log('hi');

  9.    }

  10.  };

  11.  return test

  12. })))

到这里一个简单的包就创建好了。 如果想再完善一下的话,还可以在包根目录下创建README.md文件,里面可以写一些关于包的介绍信息,最后发布后会展示在NPM官网上。

开始发布创建好的包

使用终端命令行 如果是第一次发布包,执行以下命令,然后输入前面注册好的NPM账号,密码和邮箱,将提示创建成功

  1. npm adduser

如果不是第一次发布包,执行以下命令进行登录,同样输入NPM账号,密码和邮箱

  1. npm login

注意:npm adduser成功的时候默认你已经登陆了,所以不需要再进行npm login了

接着先进入项目文件夹下,然后输入以下命令进行发布

  1. npm publish

当终端显示如下面的信息时,就代表版本号为1.0.0的包发布成功啦!前往NPM官网就可以查到你的包了

  1. myMacBook-Pro:sugars_demo sugars$ npm publish

  2. + sugars_demo@1.0.0

如果遇到显示以下信息,比如

  1. npm ERR publish 403

  2. You do not have permission to publish 'bootstrap'.Are you logged in as

  3. the corrent user?:bootstrap

意思就是你没有权限发布名为“bootstrap”的包,显然这个鼎鼎有名的包已经有人发布了,所以你只能另取它名。

更新已经发布的包

更新包的操作和发布包的操作其实是一样的

  1. npm publish

但要注意的是,每次更新时,必须修改版本号后才能更新,比如将1.0.0修改为1.0.1后就能进行更新发布了。 这里的包版本号有一套规则,采用的是semver(语义化版本),通俗点意思就是版本号:大改.中改.小改

如何发布第一个属于自己的npm包的更多相关文章

  1. 如何发布第一个属于自己的npm包 到公网

    发布前的准备 1. 注册一个npm账号 前往NPM官网进行注册 2. 创建一个简单的包 在本地创建一个项目文件夹 mannymu_demo (名字自己取,不要和NPM上已有的包名重复冲突就好)然后通过 ...

  2. 从0到1发布一个npm包

    从0到1发布一个npm包 author: @TiffanysBear 最近在项目业务中有遇到一些问题,一些通用的方法或者封装的模块在PC.WAP甚至是APP中都需要使用,但是对于业务的PC.WAP.A ...

  3. 如何发布一个npm包(基于vue)

    前言:工作的时候总是使用别人的npm包,然而我有时心底会好奇自己如何发布一个npm包呢,什么时候自己的包能够被很多人喜欢并使用呢...今天我终于迈出了第一步. 前提:会使用 npm,有 vue 基础, ...

  4. 不会发布npm包?进来看看?

    前言 npm(Node Package Manager),一个Node的包管理器,平时我们常用的公共模块(插件)或者叫做包大多都放在上面,所以接下来要封装的插件,我们就简单称它为npm包,本文从就从这 ...

  5. 如何发布一个包到npm && 如何使用自己发布的npm包 && 如何更新发布到npm的package && 如何更新当前项目的包?

    如何发布一个包到npm First 在https://www.npmjs.com注册一个账号. Second 编辑好项目,文件大致如下: 其中,gitignore可以如下: .DS_Store nod ...

  6. 使用vuecli3发布npm包

    一.使用vuecli3创建项目 vue create svgicon 二.修改目录,开发组件前的准备 把src目录改为examples作为查看组件的演示目录,新建packages目录作为组件编写的目录 ...

  7. 发布一个npm包(webpack loader)

    发布一个npm包,webpack loader: reverse-color-loader,实现颜色反转. 初始化项目 mkdir reverse-color-loader cd ./reverse- ...

  8. 如何发布一个 npm 包

    一 背景 在工作时,突然接到经理的一个要求,需要将一个react的高阶组件函数封装成一个npm包.之前从没弄过,当场还是有些懵逼的,但是这毕竟是工作,不能推脱.于是开始了学习.汤坑之旅.最终包发布,线 ...

  9. npm 包发布,自己本机发布,前端内部发布,全网发布

    第一步,安装 sinopia npm install -g sinopia 开启终端一: 第二步,启动 sinopia -l 127.0.0.1:4873 开启终端二: cd 到某个指定仓库 mkdi ...

随机推荐

  1. SQL学习总结笔记

    SQL语句的效率不仅是sql语句的设计还有一些其他的原因比如网络 .是否有视图.是否有索引等等.这里主要描述的是我个人对于sql设计方面优化的一些见解: 首先要说明一下的是数据库SQL解析顺序: (1 ...

  2. Oracle11g 数据库的导入导出

    导出: 全部: exp imagesys/imagesys@orcl file=/icms/20170116.dmp full=y 用户: exp imagesys/imagesys @orcl fi ...

  3. 03_2_JAVA中的面向对象与内存解析

    03_2_JAVA中的面向对象与内存解析 1. 成员变量 成员变量可以是Java语言中任何一种数据类型(包括基本数据类型和引用数据类型) 在定义成员变量时可以对其初始化,如果不对其初始化,Java使用 ...

  4. Linux curl命令中,HTTP 302处理

    在Linux中使用curl命令时,偶尔会遇到一些URL跳转到新的URL,即HTTP中的3XX(redirection,重定向 ). $curl -s -I $URL > log 这时在返回的报文 ...

  5. 使用 CFile 的子类 CStdioFile 的注意事项

    目前为止只用到了 ReadString,也了解了一下 WriteString. 由于程序需要,本来程序中是用的CFile, 但是需要逐行读取文件数据,所以谷歌找到了 ReadString 类 —— 继 ...

  6. OpenCV编译 Make出错 recipe for target 'modules/imgproc/CMakeFiles/opencv_test_imgproc.dir/all' failed

    OpenCV编译  Make出错 recipe for target 'modules/imgproc/CMakeFiles/opencv_test_imgproc.dir/all' failed 添 ...

  7. C# NotifyIcon 托盘控件

    右下角以图标形式显示,双击图标显示界面,最小化界面时不显示在任务栏. 第一步:在界面上添加NotifyIcon控件. 第二步:设置notifyIcon1的属性,添加图标,将Visible设为true. ...

  8. Lecture 1

    Principles of GIS( UNSW Metternicht ) outline:data input---data management---data manipulation+data ...

  9. python-闭包函数和装饰器

    目录 闭包函数 什么是闭包? 两种为函数传参的方式 使用参数的形式 包给函数 闭包函数的应用 闭包的意义: 装饰器 无参装饰器 什么是装饰器 为什么要用装饰器 怎么用装饰器 完善装饰器 闭包函数 什么 ...

  10. HDU 4990 Reading comprehension 矩阵快速幂

    题意: 给出一个序列, \(f_n=\left\{\begin{matrix} 2f_{n-1}+1, n \, mod \, 2=1\\ 2f_{n-1}, n \, mod \, 2=0 \end ...