zoukankan      html  css  js  c++  java
  • NodeJs之npm

    today, 我们的话题作文是nodejs,我尝试对它的描述是:似曾相似,但它又不一样的存在着。百花齐放的it世界里,以独特身姿绽放的美丽更容易吸引人。也许只是不了解,也许时间会给出答案,nodejs你值得拥有。

    在2篇中我们接触了一点点关于nodejs包(package)的话题,那么乘热打铁,本篇聊一下包管理工具npm。

    1.npm 包管理工具

    Node.js包管理器,即npm是Node.js官方提供的包管理器工具,他已经成了Node.js包的标准发布平台,用于Node.js包的发布,传播,依赖控制.npm提供了命令行工具,使你可以方便的下载,安装,,升级,删除包,也可以让你作为开发者发布并维护包.

    这个东西会跟随着NodeJs的安装而自动安装,通过在命令行中输入npm -v查看npm安装的版本,这样间接可以知道是否已经成功安装了npm。

    E:NodeJS>npm -v
    2.14.12

    下面简单看一下npm的作用:
    允许用户从NPM服务器下载别人编写的第三方包到本地使用。
    允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
    允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

    2.使用npm下载安装包

    npm install packageName  或者npm i packageName

    安装成功的包,会放置在当前目录的node_modules子目录下,npm在获取包的同时还会自动解析其依赖,并会去下载其依赖的包。

    2.1本地模式和全局模式

    在使用npm安装包时, 有两种模式,一种本地模式(不带参数-g),一种全局模式。
    本地安装    不加-g
    1. 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。
    2. 可以通过 require() 来引入本地安装的包。

    默认情况下,不带参数-g的install命令采用的就是本地模式,包将会安装在子目录node_modules下。Node.js的require在加载模块时会尝试搜寻该目录,因此使用本地模式安装的包可以被直接引用。


    全局安装    加-g
    1. 将安装包放在 /usr/local 下。
    2. 可以直接在命令行里使用。
    3. 不能通过 require() 来引入本地安装的包

    加了-g安装,npm 会将包安装到系统目录,譬如 /usr/local/lib/node_modules/,同时 package.json 文 件中 bin 字段包含的文件会被链接到 /usr/local/bin/。/usr/local/bin/ 是在PATH 环境变量中默认 定义的,因此就可以像之前supervisor工具那样子直接在命令行中运行 supervisor script.js命令了。


    为什么要使用全局模式呢?多数时候并不是因为许多程序都有可能用到它,为了减少多重副本而使用全局模式,而是因为本地模式不会注册 PATH 环境变量。
                 required  注册path
    本地模式    YES        NO
    全局模式    NO         YES
    总而言之,当我们要把某个包作为工程运行时的一部分,通过本地模式获取,如果要在命令行下使用,则使用全局模式安装.

    3.使用npm发布包
    3.1制作一个符合CommonJS规范的package.json文件
    通过使用npm init可以根据交互式问答产生一个符合标准的package.json
       ==>>>   比如创建一个myPackage的目录,然后在这个目录中运行npm init

    E:NodeJSmyPackage>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> --save` afterwards to install a package and
    save it as a dependency in the package.json file.

    Press ^C at any time to quit.
    name: (myPackage) YZR
    Sorry, name can no longer contain capital letters.
    name: (myPackage) yzr
    version: (1.0.0) 0.0.1
    description: test
    entry point: (index.js) default.js
    test command: make test
    git repository: http://github/YangZhiRan/mypackage.git
    keywords: nodejs yzr
    author: YZR
    license: (ISC) MIT
    About to write to E:NodeJSmyPackagepackage.json:

    {
      "name": "yzr",
      "version": "0.0.1",
      "description": "test",
      "main": "default.js",
      "directories": {
        "doc": "doc",
        "test": "test"
      },
      "scripts": {
        "test": "make test"
      },
      "repository": {
        "type": "git",
        "url": "http://github/YangZhiRan/mypackage.git"
      },
      "keywords": [
        "nodejs",
        "yzr"
      ],
      "author": "YZR",
      "license": "MIT"
    }


    Is this ok? (yes) yes

    E:NodeJSmyPackage>


    3.2得到一个npm帐号
    在发布之前,我们需要一个帐号用于今后维护自己的包,使用npm adduser根据提示输入用户名,密码,邮箱,等待帐号创建完成。
    完成后可以使用npm whoami测验是否已经取得了帐号.

    E:NodeJSmyPackage>npm adduser
    Username: YangZhiRan
    npm WARN Username must be lowercase
    Username: yangzhiran
    Password:
    Email: (this IS public) 2437676796@qq.com


    E:NodeJSmyPackage>npm whoami
    yangzhiran


    3.3发布
    在package.json文件所在目录下运行npm publish
      ===>访问https://www.npmjs.com/就可以找到自己发布的包了


    E:NodeJSmyPackage>npm publish
    + yzr@0.0.1


    3.4更新版本
    只需要在package.json文件中修改version字段,然后重新使用npm publish 命令。
    3.5卸载包
    使用npm unpublish命令来取消发布.

    下面涉及npm代理的设置,有需要可以看一下:

    设置http代理:npm config Set proxy http:ip地址:端口

    取消代理设置:npm config delete proxy

    Next:NodeJS调试

  • 相关阅读:
    [转]scp用法
    进入docker登录psql数据库对特定表进行操作
    [整]swp文件的处理
    shift+zz保存并退出
    [转]python变量作用域的有趣差别
    git 删除分支操作
    混用参数命名方式,确保顺序在命名之前
    [译]Python面试中8个必考问题
    《浪潮之巅》与我的职业选择
    EBS 用户及其联系人的失效时间
  • 原文地址:https://www.cnblogs.com/Francis-YZR/p/5261173.html
Copyright © 2011-2022 走看看