美文网首页
关于npm的介绍和使用

关于npm的介绍和使用

作者: JRG_Orange | 来源:发表于2017-09-06 22:19 被阅读0次

    NPM(node package manager),通常称为node包管理器。顾名思义,它的主要功能就是管理node包,包括:安装、卸载、更新、查看、搜索、发布等。

    一.npm的安装

    以前的node.js需要自己下载npm,现在只要用户下载node.js,npm就会下载在本地了。
    node.js下载网址
    安装完成后,在终端输入:

    node -v
    

    可以查看node.js的版本号;
    同样输入:

    npm -v
    

    也可以查看npm的版本号。

    二. npm包管理

    npm包就想手机app商店里的应用,每一个应用都有一个独一无二的名字,所以安装时只需要通过名称来下载想要的包。
    node包的安装分两种:本地安装、全局安装。两者的区别如下:

    1. 本地安装:package会被下载到当前所在目录,也只能在当前目录下使用。(一般cd到当前工作的文件夹下安装)本地安装只需要输入:
    npm install xxx
    

    也可以快捷输入为:

    npm i xxx
    

    安装指定版本的包:

    npm install xxx@x.x.x
    

    卸载一个包:

    npm uninstall xxx
    

    本地安装的包,安装在当前项目的node_modules文件夹下。
    本地安装后可以直接通过require()的方式引入项目中node_modules目录下的模块,如下示例,本地安装后直接在gulpfile.js中require('gulp')。

    var gulp = require('gulp')
    var sass = require('sass')
    

    tips: 如果使用npm安装插件太慢(被墙),可执行

    npm install -g cnpm --registry=[https://registry.npm.taobao.org
    

    安装好cnpm之后,再安装插件时用cnpm安装node包:

    cnpm install gulp
    
    1. 全局安装:package会被下载到Node安装目录下的node_modules文件夹中,(在windows下,一般在 \Users\用户名\AppData\Roaming\ 目录下)可以使用
    npm root -g
    

    查看全局安装目录。
    全局安装的命令为:

    npm install -g xxx
    

    全局安装的package能够在所有目录下“使用”,一般命令行工具使用全局安装。

    这里有一个误区,既然可以全局安装了,我们为什么还要浪费时间在本地安装呢?

    1. 全局安装只是意味着用户可以在全局使用该组件包支持的命令行,并不是所有的项目文件夹中可以require到想要的依赖(包),当我们在本地引用一个包时,首先在引用文件的文件夹中查找node_modules文件夹,如果没就在上一层文件夹中查找node_modules,最后直接到根目录,很明显这个过程不会查找到全局安装的目录。
    2. 全局安装对于包的更新不好管理,可能你需要为每个包重新命名,如gulp@3.8.1、gulp@3.9.1...,为了区别不同项目使用指定的包(我们在项目中可能经常需要使用不同版本的包),保证模块之间的相互依赖,区别每个项目正常运行,所以本地安装也是很有必要的。

    三、关于npm的package.json

    在我们完成一个项目时,有一些包是开发、测试、打包等工程化所需要的,有一些则是项目运行中所依赖的。当我们把包发布上线时,用户只需要下载项目运行时所需要的包就可以了。那么用户的npm如何知道哪些是必须的依赖呢。这些信息都会写在node包的package.json中。
    每一个node包都会有一个package.json文件,在安装一个node包时,当我们执行

    npm install --save xxx
    

    安装的node包的名称就会写入package.json中的dependencies字段下,表示这个包是项目运行所依赖的包。
    如果我们安装一个包时执行:

    npm install --save-dev xxx
    
    

    则会在packaeg.json中的devDependencies字段下写入node包的名字,说明这个包时开发中依赖的包。
    如此一来用户在下载使用我们开发的包时,就可以只下载运行中依赖的包了。
    在新建的项目文件夹中执行:

    npm init
    

    会生成一个package.json文件,会提示让你输入包的名称、版本号、作者等信息。如果觉得复杂当然可以选择直接按enter过,或者你可以选择:

    npm init -y
    

    来快速创建一个package.json文件。
    下面是一个完整的package.json文件:

    {
        "name": "Hello World",
        "version": "0.0.1",
        "author": "张三",
        "description": "第一个node.js程序",
        "keywords":["node.js","javascript"],
        "repository": {
            "type": "git",
            "url": "https://path/to/url"
        },
        "license":"MIT",
        "engines": {"node": "0.10.x"},
        "bugs":{"url":"http://path/to/bug","email":"bug@example.com"},
        "contributors":[{"name":"李四","email":"lisi@example.com"}],
            "bin": {
                    "weather": "./index.js"
            }
        "scripts": {
            "start": "node index.js"
        },
        "dependencies": {
            "express": "latest",
            "mongoose": "~3.8.3",
            "handlebars-runtime": "~1.0.12",
            "express3-handlebars": "~0.5.0",
            "MD5": "~1.2.0"
        },
        "devDependencies": {
            "bower": "~1.2.8",
            "grunt": "~0.4.1",
            "grunt-contrib-concat": "~0.3.0",
            "grunt-contrib-jshint": "~0.7.2",
            "grunt-contrib-uglify": "~0.2.7",
            "grunt-contrib-clean": "~0.5.0",
            "browserify": "2.36.1",
            "grunt-browserify": "~1.3.0",
        }
    }
    

    最后值得一提的是scripts字段和bin字段,package.json的scripts字段指定了运行脚本命令的npm命令行缩写,比如上面的start指定了运行npm run start时,所要执行的命令"node index.js"。这更加方便我们调用指令,不用输入一大串的指令来调用模块。
    bin字段则指定各个内部命令对应的可执行文件的位置,比如上面的weather指定了可执行文件index.js的位置。下面我们还会相信讲解发布一个node包时,bin的用法。

    四、如何发布自己的npm包

    在熟悉了npm的使用方法后,我们可以尝试自己写一个简单的npm包,并发布上线,首先我们需要一个npm账号,可以在npm官网,注册一个账号。在完成邮箱验证后就可以发布自己的包了。
    在制作自己的node包时,首先我们新建一个项目文件夹,cd到文件夹中,使用

    npm init
    

    来创建package.json文件,然后安装自己的开发依赖包和运行依赖包,最后把可执行文件的位置添加到bin字段,使用者就可通过bin字段的命令来快捷执行可执行文件,需要注意的是当js文件作为可执行文件时需要在文件的开始添加

    #!/usr/bin/env node
    

    这样文件就会默认在node环境中执行。
    我们可以通过命令:

    npm login
    

    来登录npm账号
    通过

    npm publish
    

    来发布完成的node包
    当修改一个包后重新发布时,需要修改版本号,才可以发布上线,在发布时最好有一个readme.md来说明如何使用和包的功能示例。

    更多详细的npm相关介绍可查看npm官方文档

    相关文章

      网友评论

          本文标题:关于npm的介绍和使用

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