关于 npm 最详细的介绍

npm 不需要单独安装。在安装 Node 的时候,会连带一起安装 npm 。但是,Node 附带的 npm 可能不是最新版本,最后用下面的命令,更新到最新版本。

$ sudo npm install npm@latest -g

如果是 Window 系统使用以下命令即可:

npm install npm -g

也就是使用 npm 安装自己。之所以可以这样,是因为 npm 本身与 Node 的其他模块没有区别。

然后,运行下面的命令,查看各种信息。

查看 npm 命令列表

$ npm help

查看各个命令的简单用法

$ npm -l

查看 npm 的版本

$ npm -v

查看 npm 的配置

$ npm config list -l

使用


npm init

npm init 用来初始化生成一个新的 package.json 文件。它会向用户提问一系列问题,如果你觉得不用修改默认配置,一路回车就可以了。

如果使用了 -f(代表force)、-y(代表yes),则跳过提问阶段,直接生成一个新的 package.json 文件。

$ npm init -y

npm set

npm set 用来设置环境变量

$ npm set init-author-name ‘Your name’

$ npm set init-author-email ‘Your email’

$ npm set init-author-url ‘http://yourdomain.com’

$ npm set init-license ‘MIT’

上面命令等于为 npm init 设置了默认值,以后执行 npm init 的时候,package.json 的作者姓名、邮件、主页、许可证字段就会自动写入预设的值。这些信息会存放在用户主目录的 ~/.npmrc文件,使得用户不用每个项目都输入。如果某个项目有不同的设置,可以针对该项目运行 npm config

npm info

npm info 命令可以查看每个模块的具体信息。比如,查看 underscore 模块的信息。

$ npm info underscore

上面命令返回一个 JavaScript 对象,包含了 underscore 模块的详细信息。这个对象的每个成员,都可以直接从 info 命令查询。

$ npm info underscore description

$ npm info underscore homepage

$ npm info underscore version

npm search

npm search 命令用于搜索 npm 仓库,它后面可以跟字符串,也可以跟正则表达式。

$ npm search <搜索词>

npm list

npm list 命令以树形结构列出当前项目安装的所有模块,以及它们依赖的模块。

$ npm list

加上 global 参数,会列出全局安装的模块

$ npm list -global

npm list 命令也可以列出单个模块

$ npm list underscore

npm install

使用 npm 安装包的命令格式为:

npm [install/i] [package_name]

本地模式和全局模式

npm 在默认情况下会从 http://npmjs.org 搜索或下载包,将包安装到当前目录的 node_modules 子目录下。

如果你熟悉 Ruby 的 gem 或者 Python 的 pip,你会发现 npm 与它们的行为不同,gem 或 pip 总是以全局模式安装,使包可以供所有的程序使用,而 npm 默认会把包安装到当前目录下。这反映了 npm 不同的设计哲学。如果把包安装到全局,可以提供程序的重复利用程度,避免同样的内容的多分副本,但坏处是难以处理不同的版本依赖。如果把包安装到当前目录,或者说本地,则不会有不同程序依赖不同版本的包的冲突问题,同时还减轻了包作者的 API 兼容性压力,但缺陷则是同一个包可能会被安装许多次。

我们在使用 supervisor 的时候使用了 npm install -g supervisor 命令,就是以全局模式安装 supervisor 。

这里注意一点的就是,supervisor 必须安装到全局,如果你不安装到全局,错误命令会提示你安装到全局。如果不想安装到默认的全局,也可以自己修改全局路径到当前路径 npm config set prefix "路径" 安装完以后就可以用 supervisor 来启动服务了。

supervisor 可以帮助你实现这个功能,它会监视你对代码的驱动,并自动重启 Node.js 。

一般来说,全局安装只适用于工具模块,比如 eslintgulp 。关于使用全局模式,多数时候并不是因为许多程序都有可能用到了它,为了减少多重副本而使用全局模式,而是因为本地模式不会注册 PATH 环境变量

“本地安装”指的是将一个模块下载到当前项目的 node_modules 子目录,然后只有在项目目录之中,才能调用这个模块。

本地模式和全局模式的特点如下:

| 模式 | 可通过 require 使用 | 注册 PATH |

| :-: | :-: | :-: |

| 本地模式 | 是 | 否 |

| 全局模式 | 否 | 是 |

本地安装

$ npm install

全局安装

$ sudo npm install -global

$ sudo npm install -g

npm install 也支持直接输入 Github 代码库地址。

$ npm install git://github.com/package/path.git

$ npm install git://github.com/package/path.git#0.1.0

安装之前,npm install 会先检查,node_modules 目录之中是否已经存在指定模块。如果存在,就不再重新安装了,即使远程仓库已经有了一个新版本,也是如此。

如果你希望,一个模块不管是否安装过, npm 都要强制重新安装,可以使用 -f 或 --force 参数。

$ npm install --force

安装不同版本

install 命令总是安装模块的最新版本,如果要安装模块的特定版本,可以在模块名后面加上 @ 和版本号。

$ npm install sax@latest

$ npm install sax@0.1.1

$ npm install sax@“>=0.1.0 <0.2.0”

install 命令可以使用不同参数,指定所安装的模块属于哪一种性质的依赖关系,即出现在 packages.json 文件的哪一项中。

–save:模块名将被添加到 dependencies,可以简化为参数-S。

–save-dev:模块名将被添加到 devDependencies,可以简化为参数-D。

$ npm install sax --save

$ npm install node-tap --save-dev

或者

$ npm install sax -S

$ npm install node-tap -D

dependencies 依赖

这个可以说是我们 npm 核心一项内容,依赖管理,这个对象里面的内容就是我们这个项目所依赖的 js 模块包。下面这段代码表示我们依赖了 markdown-it 这个包,版本是 ^8.1.0 ,代表最小依赖版本是 8.1.0 ,如果这个包有更新,那么当我们使用 npm install 命令的时候,npm 会帮我们下载最新的包。当别人引用我们这个包的时候,包内的依赖包也会被下载下来。

“dependencies”: {

“markdown-it”: “^8.1.0”

}

devDependencies 开发依赖

在我们开发的时候会用到的一些包,只是在开发环境中需要用到,但是在别人引用我们包的时候,不会用到这些内容,放在 devDependencies 的包,在别人引用的时候不会被 npm 下载。

“devDependencies”: {

“autoprefixer”: “^6.4.0”,0",

“babel-preset-es2015”: “^6.0.0”,

“babel-preset-stage-2”: “^6.0.0”,

“babel-register”: “^6.0.0”,

“webpack”: “^1.13.2”,

“webpack-dev-middleware”: “^1.8.3”,

“webpack-hot-middleware”: “^2.12.2”,

“webpack-merge”: “^0.14.1”,

“highlightjs”: “^9.8.0”

}

当你有了一个完整的 package.json 文件的时候,就可以让人一眼看出来,这个模块的基本信息,和这个模块所需要依赖的包。我们可以通过 npm install 就可以很方便的下载好这个模块所需要的包。

npm install 默认会安装 dependencies 字段和 devDependencies 字段中的所有模块,如果使用 --production 参数,可以只安装 dependencies 字段的模块。

$ npm install --production

或者

$ NODE_ENV=production npm install

一旦安装了某个模块,就可以在代码中用 require 命令加载这个模块。

var backbone = require(‘backbone’)

console.log(backbone.VERSION)

npm run

npm 不仅可以用于模块管理,还可以用于执行脚本。package.json 文件有一个 scripts 字段,可以用于指定脚本命令,供 npm 直接调用。

package.json

{

“name”: “myproject”,

“devDependencies”: {

“jshint”: “latest”,

“browserify”: “latest”,

“mocha”: “latest”

},

“scripts”: {

“lint”: “jshint **.js”,

“test”: “mocha test/”

}

}

scripts 脚本

顾名思义,就是一些脚本代码,可以通过 npm run script-key 来调用,例如在这个 package.json 的文件夹下使用 npm run dev 就相当于运行了 node build/dev-server.js 这一段代码。使用 scripts 的目的就是为了把一些要执行的代码合并到一起,使用 npm run 来快速的运行,方便省事。

npm runnpm run-script 的缩写,一般都使用前者,但是后者可以更好的反应这个命令的本质。

// 脚本

“scripts”: {

“dev”: “node build/dev-server.js”,

“build”: “node build/build.js”,

“docs”: “node build/docs.js”,

“build-docs”: “npm run docs & git checkout gh-pages & xcopy /sy dist\* . & git add . & git commit -m ‘auto-pages’ & git push & git checkout master”,

“build-publish”: “rmdir /S /Q lib & npm run build &git add . & git commit -m auto-build & npm version patch & npm publish & git push”,

“lint”: “eslint --ext .js,.vue src”

}

npm run 如果不加任何参数,直接运行,会列出 package.json 里面所有可以执行的脚本命令。

npm 内置了两个命令简写, npm test 等同于执行 npm run testnpm start 等同于执行 npm run start

“build”: “npm run build-js && npm run build-css”

上面的写法是先运行 npm run build-js ,然后再运行 npm run build-css ,两个命令中间用 && 连接。如果希望两个命令同时平行执行,它们中间可以用 & 连接。

写在 scripts 属性中的命令,也可以在 node_modules/.bin 目录中直接写成 bash 脚本。下面是一个 bash 脚本。

#!/bin/bash

cd site/main

browserify browser/main.js | uglifyjs -mc > static/bundle.js

假定上面的脚本文件名为 build.sh ,并且权限为可执行,就可以在 scripts 属性中引用该文件。

“build-js”: “bin/build.sh”

pre- 和 post- 脚本

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后:

总结来说,面试成功=基础知识+项目经验+表达技巧+运气。我们无法控制运气,但是我们可以在别的地方花更多时间,每个环节都提前做好准备。

面试一方面是为了找到工作,升职加薪,另一方面也是对于自我能力的考察。能够面试成功不仅仅是来自面试前的临时抱佛脚,更重要的是在平时学习和工作中不断积累和坚持,把每个知识点、每一次项目开发、每次遇到的难点知识,做好积累,实践和总结。

点击这里领取Web前端开发经典面试题

k91QILqb-1713113910251)]

[外链图片转存中…(img-TbILzISi-1713113910252)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

[外链图片转存中…(img-LAzLrFUS-1713113910252)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后:

总结来说,面试成功=基础知识+项目经验+表达技巧+运气。我们无法控制运气,但是我们可以在别的地方花更多时间,每个环节都提前做好准备。

面试一方面是为了找到工作,升职加薪,另一方面也是对于自我能力的考察。能够面试成功不仅仅是来自面试前的临时抱佛脚,更重要的是在平时学习和工作中不断积累和坚持,把每个知识点、每一次项目开发、每次遇到的难点知识,做好积累,实践和总结。

点击这里领取Web前端开发经典面试题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值