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.
- version Must match version exactly
- >version Must be greater than version
- >=version etc
- <version
- <=version
- ~version “Approximately equivalent to version” See semver
- ^version “Compatible with version” See semver
- 1.2.x 1.2.0, 1.2.1, etc., but not 1.3.0
- http://... See ‘URLs as Dependencies’ below
- * Matches any version
- "" (just an empty string) Same as *
- version1 - version2 Same as >=version1 <=version2.
- range1 || range2 Passes if either range1 or range2 are satisfied.
- git... See ‘Git URLs as Dependencies’ below
- user/repo See ‘GitHub URLs’ below
- tag A specific version tagged and published as tag See npm-dist-tag
- path/path/path See 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.4
X-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 as 1.2.x)
- ~1 := >=1.0.0 <(1+1).0.0 := >=1.0.0 <2.0.0 (Same as 1.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 as 0.2.x)
- ~0 := >=0.0.0 <(0+1).0.0 := >=0.0.0 <1.0.0 (Same as 0.x)
- ~1.2.3-beta.2 := >=1.2.3-beta.2 <1.3.0 Note that prereleases in the 1.2.3 version will be allowed, if they are greater than or equal to beta.2. So, 1.2.3-beta.4 would be allowed, but 1.2.4-beta.2 would 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 versions 1.0.0 and above, patch updates for versions 0.X >=0.1.0, and no updates for versions 0.0.X.
Many authors treat a 0.x version as if the x were the major “breaking-change” indicator.
Caret ranges are ideal when an author may make breaking changes between 0.2.4 and 0.3.0 releases, which is a common practice. However, it presumes that there will not be breaking changes between 0.2.4 and 0.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.0 Note that prereleases in the 1.2.3 version will be allowed, if they are greater than or equal to beta.2. So, 1.2.3-beta.4 would be allowed, but 1.2.4-beta.2 would not, because it is a prerelease of a different [major, minor, patch] tuple.
- ^0.0.3-beta := >=0.0.3-beta <0.0.4 Note that prereleases in the 0.0.3 version only will be allowed, if they are greater than or equal to beta. So, 0.0.3-pr.2 would 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// 需要設置庫URL npm config set registry=http://registry.npmjs.org
?
例子:
https://www.npmjs.com/package/dijistra
?
轉載于:https://www.cnblogs.com/lightsong/p/10556036.html
總結
以上是生活随笔為你收集整理的npm knowledge basics的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iframe使用
- 下一篇: redis-Windows下安装与操作