npm knowledge basics
npm inro
https://www.npmjs.com/
npm is the package manager for javascript
npm 为 nodejs默认的包管理工具, 为nodejs软件内置。
安装nodejs后, 使用 npm install xxx 可以安装第三方软件库
对于开发者自己建立一个npm工程, 使用npm init完成。
demo
各个参数解读,见官方文档:
https://docs.npmjs.com/files/package.json#version
{"name": "dijistra","version": "1.0.4","description": "a simple dijistra implementation of js version","main": "./dist/dijistra.umd.js","scripts": {"build": "webpack --config webpack-config.js","publish": "npm publish","lint": "eslint src"},"keywords": ["dijistra", "algorithm"],"author": "lightsong","license": "MIT","repository": {"type": "git","url": "https://github.com/fanqingsong/dijistra_algorithm"},"devDependencies": {"babel-core": "^6.9.1","babel-eslint": "^6.0.4","babel-loader": "^6.2.4","babel-plugin-syntax-dynamic-import": "^6.18.0","babel-preset-es2015": "^6.9.0","babel-preset-stage-2": "^6.5.0","css-loader": "^0.23.1","eslint": "^2.12.0","eslint-config-airbnb-base": "^3.0.1","eslint-plugin-babel": "^3.2.0","html-webpack-plugin": "^2.21.0","style-loader": "^0.13.1","webpack": "^3.5.4","webpack-dev-server": "^1.14.1"},"dependencies": {"pleasejs": "^0.4.2"}}
版本号含义
版本号的格式有多种, 支持各种需求场景。
默认 npm install --save-dev xxx 是按照兼容格式来 ^ x.xx.xx
https://docs.npmjs.com/files/package.json#dependency
See semver for more details about specifying version ranges.
versionMust matchversionexactly>versionMust be greater thanversion>=versionetc<version<=version~version“Approximately equivalent to version” See semver^version“Compatible with version” See semver1.2.x1.2.0, 1.2.1, etc., but not 1.3.0http://...See ‘URLs as Dependencies’ below*Matches any version""(just an empty string) Same as*version1 - version2Same as>=version1 <=version2.range1 || range2Passes if either range1 or range2 are satisfied.git...See ‘Git URLs as Dependencies’ belowuser/repoSee ‘GitHub URLs’ belowtagA specific version tagged and published astagSeenpm-dist-tagpath/path/pathSee Local Paths below
详细说明:
https://docs.npmjs.com/misc/semver
Hyphen Ranges X.Y.Z - A.B.C§
Specifies an inclusive set.
1.2.3 - 2.3.4:=>=1.2.3 <=2.3.4X-Ranges 1.2.x 1.X 1.2.* *§
Any of
X,x, or*may be used to “stand in” for one of the numeric values in the[major, minor, patch]tuple.
*:=>=0.0.0(Any version satisfies)1.x:=>=1.0.0 <2.0.0(Matching major version)1.2.x:=>=1.2.0 <1.3.0(Matching major and minor versions)Tilde Ranges ~1.2.3 ~1.2 ~1§
Allows patch-level changes if a minor version is specified on the comparator. Allows minor-level changes if not.
~1.2.3:=>=1.2.3 <1.(2+1).0:=>=1.2.3 <1.3.0~1.2:=>=1.2.0 <1.(2+1).0:=>=1.2.0 <1.3.0(Same as1.2.x)~1:=>=1.0.0 <(1+1).0.0:=>=1.0.0 <2.0.0(Same as1.x)~0.2.3:=>=0.2.3 <0.(2+1).0:=>=0.2.3 <0.3.0~0.2:=>=0.2.0 <0.(2+1).0:=>=0.2.0 <0.3.0(Same as0.2.x)~0:=>=0.0.0 <(0+1).0.0:=>=0.0.0 <1.0.0(Same as0.x)~1.2.3-beta.2:=>=1.2.3-beta.2 <1.3.0Note that prereleases in the1.2.3version will be allowed, if they are greater than or equal tobeta.2. So,1.2.3-beta.4would be allowed, but1.2.4-beta.2would not, because it is a prerelease of a different[major, minor, patch]tuple.Caret Ranges ^1.2.3 ^0.2.5 ^0.0.4§
Allows changes that do not modify the left-most non-zero digit in the
[major, minor, patch]tuple. In other words, this allows patch and minor updates for versions1.0.0and above, patch updates for versions0.X >=0.1.0, and no updates for versions0.0.X.Many authors treat a
0.xversion as if thexwere the major “breaking-change” indicator.Caret ranges are ideal when an author may make breaking changes between
0.2.4and0.3.0releases, which is a common practice. However, it presumes that there will not be breaking changes between0.2.4and0.2.5. It allows for changes that are presumed to be additive (but non-breaking), according to commonly observed practices.
^1.2.3:=>=1.2.3 <2.0.0^0.2.3:=>=0.2.3 <0.3.0^0.0.3:=>=0.0.3 <0.0.4^1.2.3-beta.2:=>=1.2.3-beta.2 <2.0.0Note that prereleases in the1.2.3version will be allowed, if they are greater than or equal tobeta.2. So,1.2.3-beta.4would be allowed, but1.2.4-beta.2would not, because it is a prerelease of a different[major, minor, patch]tuple.^0.0.3-beta:=>=0.0.3-beta <0.0.4Note that prereleases in the0.0.3version only will be allowed, if they are greater than or equal tobeta. So,0.0.3-pr.2would be allowed.
npm发布
https://www.jianshu.com/p/d9fb02a891d9
先到官网上注册, 然后使用邮箱确认。
本地登录,输入完用户名,密码,邮箱后没有错误信息就完成了。
$ npm adduser
Username: your name
Password: your password
Email: (this IS public) your email
要设置一个版本号
npm社区版本号规则采用的是semver(语义化版本),主要规则版本格式:主版本号.次版本号.修订号,版本号递增规则如下:
- 主版本号:当你做了不兼容的 API 修改,
- 次版本号:当你做了向下兼容的功能性新增,
- 修订号:当你做了向下兼容的问题修正。
先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。
发布
npm publish
// 需要设置库URLnpm config set registry=http://registry.npmjs.org
例子:
https://www.npmjs.com/package/dijistra
npm knowledge basics的更多相关文章
- Oracle DBA神器之Toad
很早就听说Toad功能很强大,一直没有使用过,因为PLSQL Developer就很好用.前几天看见同事优化Oracle就是用的Toad,有一些很强大的管理功能,于是再一次对Toad产生兴趣,收集了一 ...
- [转载]Frontend Knowledge Structure
https://github.com/JacksonTian/fks http://code.csdn.net/news/2819224 本文为大家整理了一系列关于JavaScript的常用工具,包括 ...
- npm run dev error
Please try: rm -rf node_modules rm package-lock.json npm cache clear --force npm install windows和lin ...
- Entity Framework Tutorial Basics(1):Introduction
以下系列文章为Entity Framework Turial Basics系列 http://www.entityframeworktutorial.net/EntityFramework5/enti ...
- ACM-ICPC2018沈阳网络赛 Lattice's basics in digital electronics(模拟)
Lattice's basics in digital electronics 44.08% 1000ms 131072K LATTICE is learning Digital Electron ...
- Basics of Algorithmic Trading: Concepts and Examples
https://www.investopedia.com/articles/active-trading/101014/basics-algorithmic-trading-concepts-and- ...
- upc组队赛15 Lattice's basics in digital electronics【模拟】
Lattice's basics in digital electronics 题目链接 题目描述 LATTICE is learning Digital Electronic Technology. ...
- Getting Started With Node and NPM
Getting Started with Node and NPM Let's start with the basics. Install Node.js: https://nodejs.org.
- npx & yarn & npm
npx & yarn & npm React Redux App https://reactjs.org/ https://github.com/facebook/create-rea ...
随机推荐
- JavaScript jQuery 中定义数组操作及数组操作
1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象 Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维 ...
- js实现语音功能
在项目中需要对ajax请求返回的消息进行语音播报.那么什么录制的就是在太low啦.下面js贴代码 str 为返回的data //语音播报function voiceAnnouncements(str) ...
- Swift构造
构造就是将结构体.类或枚举的实例准备好以便使用的过程.这个过程包括: (1)为实例中的每个存储属性设置初始值. (2)执行必要的准备和初始化工作. 实例的构造过程是通过构造器来完成的. 可以在结构体. ...
- 记录Nginx实现内容重定向的两种方式:rewrite和反向代理
第一种:rewrite server { listen 80; server_name www.test.org; root /te ...
- vim常用命令集
vim是vi的增强版. 这里记录下使用vim时查过的那些指令. 以备不时之需. 30j 向下移动30行 shitf + g 直接跳到文件的末尾 gg 跳回文件头 ggyG 复制全文 查找字符串 普通模 ...
- js 秒数格式化
function formatSeconds(value) { var theTime = parseInt(value);// 秒 var theTime1 = 0;// 分 var theTime ...
- shell 编程初级
shell编程的简单代码 一些基础代码 直接上代码 #!/bin/bash myUrl="gggggggg" # 只读变量设置 # readonly myUrl echo &quo ...
- js数组中随机选取一个数值!!
var arr = ["太阳光大","成功是优点的发挥","不要小看自己", "口说好话","手心向下是助人& ...
- springboot mybatis 整合
新建项目在上一篇. 第二步:创建表和相应的实体类 实体类:user.java package com.qtt.im.entity; import java.io.Serializable; publi ...
- 【问题解决方案】查看Python安装了哪些库(pandas, matplotlib等等)
查看方法: 一句命令:cmd打开终端后键入pip list END