我们这节课开始学习一下npm其实npm我们之前是接触过的,在我们在墨鱼的js前端课程或CSS3高级课程的时候,我们接触到了gulp,grunt之类的时候,我们曾经安装一些gulp的插件的时候,比如csslint,我们是这样安装的:
npm install --save-dev gulp-csslint
这个npm就是我们现在要学的npm。https://www.npmjs.com/只要你安装了node软件,你就可以直接使用npm了,因为npm是随同nodejs一起安装的包管理工具,能解决nodejs代码部署上的很多问题,常见场景有以下几种:第一,允许用户从npm服务器下载并安装别人编写的npm包第二,允许用户把自己编写的npm包上传以npm服务器供别人使用拿我们上面的csslint来做例子,npm是我们使用所有的npm命令必须要带的,后面的install表示的是我们要安装某模块,--save-dev这个我们先不管,最后面的gulp-csslint就是我们要安装的模块的名字。npm分为全局安装和本地安装,所谓的本地安装只会对你当前的目录文件夹有影响,对别的文件夹没有影响,上面的csslint就是本地安装,但如果你想全局安装,刚才的命令就得改造成为:
npm install gulp-csslint -g
全局安装的路径在C:\Users\Administrator\AppData\Roaming\npm 我们安装好了某模块之后,会发现我们当前的文件夹多了一个node_modules的文件夹,我们看一下目录结构
D:\ispace\expresslearn\node_modules\coffee-script>tree /F
卷 新加卷 的文件夹 PATH 列表
卷序列号为 3ABA-FA76
D:.
│ .npmignore
│ CNAME
│ CONTRIBUTING.md
│ LICENSE
│ package.json
│ Rakefile
│ README
│
├─bin
│ cake
│ coffee
│
└─lib
└─coffee-script
browser.js
cake.js
coffee-script.js
command.js
grammar.js
helpers.js
index.js
lexer.js
nodes.js
optparse.js
parser.js
repl.js
rewriter.js
scope.js
sourcemap.js
D:\ispace\expresslearn\node_modules\coffee-script>
我们发现这个文件夹里面有一个文件叫package.json
name - 包名。
version - 包的版本号。
description - 包的描述。
homepage - 包的官网 url 。
author - 包的作者姓名。
contributors - 包的其他贡献者姓名。
dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。
repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
main - main 字段是一个模块ID,它是一个指向你程序的主要项目。就是说,如果你包的名字叫 express,然后用户安装它,然后require("express")。
keywords - 关键字
D:\ispace\expresslearn\node_modules\coffee-script>cat package.json
{
"_args": [
[
"coffee-script@~1.6.3",
"D:\\ispace\\expresslearn\\node_modules\\swagger-ui"
]
],
"_from": "coffee-script@>=1.6.3 <1.7.0",
"_id": "[email protected]",
"_inCache": true,
"_installable": true,
"_location": "/coffee-script",
"_npmUser": {
"email": "[email protected]",
"name": "jashkenas"
},
"_npmVersion": "1.2.24",
"_phantomChildren": {},
"_requested": {
"name": "coffee-script",
"raw": "coffee-script@~1.6.3",
"rawSpec": "~1.6.3",
"scope": null,
"spec": ">=1.6.3 <1.7.0",
"type": "range"
},
"_requiredBy": [
"/swagger-ui"
],
"_resolved": "https://registry.npmjs.org/cof ... ot%3B,
"_shasum": "6355d32cf1b04cdff6b484e5e711782b2f0c39be",
"_shrinkwrap": null,
"_spec": "coffee-script@~1.6.3",
"_where": "D:\\ispace\\expresslearn\\node_modules\\swagger-ui",
"author": {
"name": "Jeremy Ashkenas"
},
"bin": {
"cake": "./bin/cake",
"coffee": "./bin/coffee"
},
"bugs": {
"url": "https://github.com/jashkenas/c ... ot%3B
},
"dependencies": {},
"description": "Unfancy JavaScript",
"devDependencies": {
"jison": ">=0.2.0",
"uglify-js": "~2.2"
},
"directories": {
"lib": "./lib/coffee-script"
},
"dist": {
"shasum": "6355d32cf1b04cdff6b484e5e711782b2f0c39be",
"tarball": "http://registry.npmjs.org/coff ... ot%3B
},
"engines": {
"node": ">=0.8.0"
},
"homepage": "http://coffeescript.org",
"keywords": [
"coffeescript",
"compiler",
"javascript",
"language"
],
"licenses": [
{
"type": "MIT",
"url": "https://raw.github.com/jashken ... ot%3B
}
],
"main": "./lib/coffee-script/coffee-script",
"maintainers": [
{
"name": "jashkenas",
"email": "[email protected]"
},
{
"name": "michaelficarra",
"email": "[email protected]"
}
],
"name": "coffee-script",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git://github.com/jashkenas/coffee-script.git"
},
"scripts": {
"test": "node ./bin/cake test"
},
"version": "1.6.3"
}