zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    nyoj 游戏高手的烦恼 (二分图最小点覆盖)
    nyoj 三国志 (Dijkstra + 01背包)
    《Algorithms 4th Edition》读书笔记——2.4 优先队列(priority queue)-Ⅱ
    《Algorithms 4th Edition》读书笔记——2.4 优先队列(priority queue)-Ⅰ
    Java学习作业(14.4.21)
    2014上年度学习计划
    快速求幂(Quick Exponentiation)
    B. Inna and Nine
    B. Valera and Contest
    Problem 2128 最长子串
  • 原文地址:https://www.cnblogs.com/lightsong/p/10556036.html
Copyright © 2011-2022 走看看