• Node: 包管理机制


    Node.js 的模块机制可以很好地解决业务代码混乱的难题,但对于第三方模块包,就有些力不从心了,因为第三方模块包分散存放在各地,无法集中式管理。这就需要一个包管理机制,在 Node.js 中,Isaac Z.Schlueter 大神创建了 NPM 库,来集中管理这些第三方包。

    对于版本管理,很多语言都有类似的管理库,Java 有 Maven,Ruby 有 Gem,它们的出现,都是为了解决依赖包对于项目开发的痛点。NPM 的出现,优雅地解决了痛点,促进了 Node 生态圈的繁荣发展,Node 社区的空前活跃,也大都归功于此。

    NPM常用功能

    在安装完 Node.js 之后,随即可查看当前 NPM 的版本:

    $ npm -v
    6.4.1
    

    如果是新手,可直接执行 npm,来查看其他使用引导说明:

    $ npm
    Usage: npm <command>
    
    where <command> is one of:
        access, adduser, audit, bin, bugs, c, cache, ci, cit,
        completion, config, create, ddp, dedupe, deprecate,
        dist-tag, docs, doctor, edit, explore, get, help,
        help-search, hook, i, init, install, install-test, it, link,
        list, ln, login, logout, ls, outdated, owner, pack, ping,
        prefix, profile, prune, publish, rb, rebuild, repo, restart,
        root, run, run-script, s, se, search, set, shrinkwrap, star,
        stars, start, stop, t, team, test, token, tst, un,
        uninstall, unpublish, unstar, up, update, v, version, view,
        whoami
    
    npm <command> -h  quick help on <command>
    npm -l            display full usage info
    npm help <term>   search for help on <term>
    npm help npm      involved overview
    
    Specify configs in the ini-formatted file:
        /Users/ok/.npmrc
    or on the command line via: npm <command> --key value
    Config info can be viewed via: npm help config
    
    npm@6.4.1 /usr/local/lib/node_modules/npm
    

    创建package.json

    NPM 的关键是 package.json,它负责告知外部,该模块包都具有哪些操作。执行 npm init 命令,可以在当前目录下,初始化一个 package.json 文件,如下所示:

    $ npm init
    This utility will walk you through creating a package.json file.
    It only covers the most common items, and tries to guess sensible defaults.
    
    See `npm help json` for definitive documentation on these fields
    and exactly what they do.
    
    Use `npm install <pkg>` afterwards to install a package and
    save it as a dependency in the package.json file.
    
    Press ^C at any time to quit.
    package name: (package) code
    version: (1.0.0) _
    

    如果你不想在命令行中一项一项填写,可直接使用 -y 参数,按照默认空值创建即可:

    $ npm init -y
    

    创建完成后的 package.json 文件内容如下:

    {
      "name": "code",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo "Error: no test specified" && exit 1"
      },
      "keywords": [],
      "author": "",
      "license": "ISC"
    }
    

    随后,开发者可按自己需要修改该文件。我们稍后会着重介绍该文件的配置内容。

    安装和卸载第三方包

    使用 NPM 可以安装和卸载第三方包:

    # 安装
    $ npm install some-lib
    
    # 卸载
    $ npm uninstall some-lib
    

    如果是在全局安装,则在命令中加入 -g 参数:

    # 安装
    $ npm install -g some-lib
    
    # 卸载
    $ npm uninstall -g some-lib
    

    查看已安装包信息

    在安装完第三方包之后,可通过命令来查看目录下已安装的包:

    $ npm ls
    

    指定镜像源

    开发者在安装第三方包时,如果不能通过官方库源,也可以选择指定的镜像源来安装,只需要使用 --registry 参数即可,例如,下面使用淘宝的镜像源:

    $ npm install some-lib --registry=https://registry.npm.taobao.org
    

    使用以上方式时,每次须指定镜像源,毕竟不太方便,我们可以设置NPM默认的库源:

    $ npm config set registry https://registry.npm.taobao.org
    

    如果有一天,你不再需要这个镜像源了,那只需执行下面命令,将其删除:

    $ npm config rm registry
    

    package.json配置

    下面是 package.json 中常用的一些配置项:

    scripts

    首先,scripts 配置项可以注册 hook 脚本,下面几项配置分别会在 npm installnpm unstall 命令运行时执行相应的脚本代码:

    "scripts": {
      "preinstall": "node preinstall.js",
      "install": "node install.js",
      "uninstall": "node uninstall.js"
    }
    

    其次,script 有两项默认的配置项,可以直接使用 npm 来执行:

    "scripts": {
      "start": "node start.js",
      "test": "node test.js"
    }
    

    上面两个配置项,我们分别可以使用 npm startnpm test 来运行。

    最后,我们还可以添加自定义配置项,对于自定义配置项,我们则需要使用 npm run 来执行,例如下面代码,我们需要使用 npm run build 来运行。

    "scripts": {
      "build": "node build.js"
    }
    

    bin

    该配置项主要用在命令行工具中。如果我们开发了一个命令行工具,用户在全局安装后,为了能在命令行中直接执行,需要我们来配置该命令所要执行的文件路径。

    例如,我们开发了一个 pack 的命令行工具,用户全局安装后,可以直接在命令行中执行 pack 来打包程序,这时候,我们需要这样配置:

    "bin": {
      "pack": "./bin/pack.js"
    }
    

    main

    该配置项主要用于指定当前包默认入口文件:

    "main": "./lib/index.js"
    

    用户在使用 require() 引入当前包时,会优先检查该配置项,如果不存在,则再试图加载当前包下面的 index.jsindex.nodeindex.json 文件。

    dependencies

    当前包在 发布环境 中的外部依赖包的集合。一般我们不会手动去配置,可以通过下面方式进行更新:

    # 添加外部依赖包
    $ npm install some-lib --save
    
    # 移除外部依赖包
    $ npm uninstall some-lib --save
    

    devDependencies

    当前包在 开发环境 中的外部依赖包集合。可以通过下面方式进行更新:

    # 添加
    $ npm install some-lib --save-dev
    
    # 移除
    $ npm uninstall some-lib --save-dev
    

    除上述几个之外,下面这些也简单介绍一下。

    name

    当前包名。命名时使用 小写字母,必要时使用 连字符数字,不要使用其他字符。

    description

    当前包的功能简介。

    version

    当前包的版本。定义版本时使用 semver 方式,具体格式为 major.minor.revision

    author

    当前包的作者。如果我们自己开发了一个开源库,就毫不犹豫地在这一项签上自己的大名吧。

    keywords

    关键字数组,用于NPM检索。可以尽量多定义与当前包相关的关键字,便于当前包被检索到。

    maintainers

    包维护者列表。每个维护者包含 nameemailweb 这三个属性。维护者列表内的用户,可以对当前包进行更新升级等操作。下面是该配置项的一个示例:

    {
      "maintainers": [
        {"name":"Jack", "email": "test@gmail.com", "web": "http://test.com"}
      ]
    }
    

    contributors

    贡献者列表。如果我们对 expresskoa 等开源库做了一些杰出贡献,那就会出现在这个列表里,是一件比较有荣誉感的事。

    对于其他配置项,大家可以参考流行的开源库。

    发布自己的包

    发布一个高质量的包到 NPM 仓库,是一件比较酷的事情,一方面锻炼了自己的技术,另外也为开源社区做一份小小的贡献,毕竟世界各地有那么多大牛参与,作为开源社区中的一份子,想想也有点自豪呢。

    要发布自己的包,首先你需要在 NPM 官网注册一个账号。

    然后,进入到包目录,执行下面命令,跟着提示填写自己的账号信息即可:

    $ npm adduser
    Username: _
    Email: _
    

    接着,执行下面命令,上传当前包到 NPM 仓库:

    $ npm publish
    

    执行完命令,包就发布到官方 NPM 仓库了,你可以打开浏览器去看看。如果是一个高质量的包,过一段时间,下载量就会上去,到时候,你会不会有一种满满的幸福感呢。

    需要注意的是,每次在本地对代码做修改,再次发布时,需要修改升级 package.json 中的版本号,否则会发布失败。

  • 相关阅读:
    HTML_表单
    jabc_DAO
    JDBC 加钱减钱
    JDBC 连接池
    JDBC
    视图序列索引
    【Java8】 lambda 特性讲解
    IntelliJ IDEA 常用快捷键
    Java IO 之 装饰模式
    Java IO 讲解
  • 原文地址:https://www.cnblogs.com/liuhe688/p/11402934.html
Copyright © 2020-2023  润新知