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 ...
随机推荐
- docker部署postgresql时,data目录不生效的问题探究
今天用docker部署postgresql,用的是官方的镜像.结果挂载完 /var/lib/postgresql/data目录后,和容器里的目录其实并没有挂载成功. 母机上的目录并没有成功挂载到容器里 ...
- .net core 命令行(仅作记录)
命令大全:dotnet 命令 创建NuGet包:如何使用 .NET Core 命令行接口 (CLI) 工具创建 NuGet 包
- c/c++ 多线程 ubuntu18.04 boost编译与运行的坑
多线程 boost编译与运行的坑 背景:因为要使用boost里的多线程库,所以遇到了下面的坑. 系统版本:ubuntu18.04 一,安装boost 1,去boost官网下载 boost_1_XX_0 ...
- python day05
数字类型 1.整型:整数 num = 1000000000000 type(num) --->int 2.浮点型:小数 num = 123.2341 type(num) --->float ...
- JWT是什么鬼
什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...
- Linux基础优化与安全归纳总结
一名运维工程师在运维岗位上时间久了,就会发现Linux优化的重要性,同时会给运维工作带来很多的便利性.本人逐渐认识到了这一点,所以特意在工作闲暇之余,通过阅读Linux相关书籍及向同事.同行高手咨询, ...
- 如何在sqlite3连接中创建并调用自定义函数
#!/user/bin/env python # @Time :2018/6/8 14:44 # @Author :PGIDYSQ #@File :CreateFunTest.py '''如何在sql ...
- 工具(1): 极简Word排版示例(Example by Word2013)
文档标题 第一行写下文档的名字,居中,微软雅黑字体,三号 章节标题 每一章的标题单独一行,光标选中这行,设置为标题1 每一节的标题单独一行,光标选中这行,设置为标题2 全部章节标题设置完毕后,下一步 ...
- 关于vue生命周期
官网给出的实例的生命周期图如下: beforeCreate(页面创建前),created(页面创建后),beforeMount(页面载入前),mounted(页面载入后),beforeUpdate(页 ...
- Linux centos nginx下载安装初步
下载源码包解压编译 1.下载 # wget http://nginx.org/download/nginx-1.9.9.tar.gz 2.解压 # tar xvf nginx-1.9.9.tar.gz ...