美文网首页
node package manager

node package manager

作者: 刘圣凯 | 来源:发表于2017-12-15 11:19 被阅读0次

    什么是npm

    npm(node package manager),通常称为node包管理器。顾名思义它的主要功能就是管理node包。它可以让开发者能够更加轻松的共享代码和共用代码片段,并且通过 npm 管理你分享的代码也很方便快捷和简单,不过有的时候项目依赖过多,造成路径过深,超过了操作系统的文件深度限制。因此npm3对此做了很大改进。简单的来说将传统的嵌套结构改为了平铺结构

    npm的安装

    安装node后,npm会自动被安装
    安装完成后,在终端输入 node -v 查看node版本,输入 npm -v 查看npm版本
    npm版本应该大于2.1.8,输入 sudo npm install npm -g 可更新npm的版本。

    npm包管理

    node包的安装分两种: 本地安装、全局安装,两者的区别如下:

    • 本地安装: package会被下载到当前所在目录,也只能在当前目录下使用
    • 全局安装: package会被下载到特定的系统目录下安装的package能够在所有目录下使用。

    node_module查找依赖的路线是:先从本地目录下寻找,不存在就依次向上级目录中查询,直到系统根目录。node全局安装在系统根目录下,所以全局安装后可在所有目录下使用。

    另外,如果你需要用到别人的包,你可以去npm官网去搜索你需要的包名,使用方法都会在上面,你只需要在你的 终端输入 npm install <app name> 就可以下载到你的目录下,然后就可以通过require去使用模块,你也可以注册登录npm,在这上面分享你的代码供其他人使用。

    npm install --save app:安装的是项目运行所依赖的模块,依赖名称会存到package.json里的"dependencies"字段里;
    npm install --save-dev app:安装的是项目开发所需要的模块,依赖名称会存到package.json里的"devDependencies"字段里

    二者之间的区别在于:比如类似于grunt,babel这类工具,是开发时使用的,就用--save-dev;
    而类似于jquery这种是给用户使用的,就用--save。
    

    而如果你需要在npm上发布了一个包,其中有两个文件是必不可少的,README.md , package.json 。
    README :你对发布你的包的介绍信息(使用方法,安装方法等)
    package.json :每个项目的根目录下面,一般都有一个package.json文件,用于定义项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npm install命令根据这个配置文件,自动下载所需要的模块,配置项目所需的运行和开发环境,npm init指令可以帮你生成一个package.json,你只需要填入信息即可。

    npm script

    npm script 允许在 package.json 中使用 script 字段定义脚本命令。通过设置npm script可以方便的实现前端工作流,举例来说,如果我们在package中添加下面在这段脚本

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

    此时,我们在npm 输入 npm run start,就相当于执行了node index.js

    npm 脚本的原理非常简单。每当执行npm run,就会自动新建一个 Shell,在这个 Shell 里面执行指定的脚本命令。因此,只要是 Shell(一般是 Bash)可以运行的命令,就可以写在 npm 脚本里面。

    比较特别的是,npm run新建的这个 Shell,会将当前目录的node_modules/.bin子目录加入PATH变量,执行结束后,再将PATH变量恢复原样。

    这意味着,当前目录的node_modules/.bin子目录里面的所有脚本,都可以直接用脚本名调用,而不必加上路径。比如,当前项目的依赖里面有 Mocha,只要直接写mocha test就可以了。
    关于 npm script ,推荐大家去看看阮一峰的这篇博客:npm script 的使用

    相关文章

      网友评论

          本文标题:node package manager

          本文链接:https://www.haomeiwen.com/subject/oistwxtx.html