皇家国际娱乐平台玩转 NPM

皇家国际娱乐平台玩转 NPM

皇家国际娱乐平台 1

一. 什么样全局安装二个 node 应用?

npm install -g xxx

NPM

二.package.json 有啥效劳?

package.json文件,定义了那么些种类所须要的种种模块,以及项目标布局消息(譬如名称、版本、许可证等元数据)。npm install一声令下根据那几个布局文件,自动下载所需的模块,也正是安顿项目所需的运行和开辟条件。
上边是2个相比较完整的package.json文件。

{
//name是项目名称
    "name": "Hello World",
//version是版本号 一般遵守(大版本.次要版本.小版本”的格式)
    "version": "0.0.1",
//author作者
    "author": "张三",
//description描述
    "description": "第一个node.js程序",
//keyword是关键字方便npm search的搜索
    "keywords":["node.js","javascript"],
    "repository": {
        "type": "git",
        "url": "https://path/to/url"
    },
//license是指定一个许可证,让人知道使用的权利和限制的
    "license":"MIT",
//engines你可以指定工作的node的版本
    "engines": {"node": "0.10.x"},
//bugs是你项目的提交问题的url和(或)邮件地址。你可以指定一个或者指定两个。如果你只想提供一个url,那就不用对象了,字符串就行。
    "bugs":{"url":"http://path/to/bug","email":"bug@example.com"},
    "contributors":[{"name":"李四","email":"lisi@example.com"}],
//scripts指定了运行脚本命令的npm命令行缩写,比如start指定了运行npm run start时,所要执行的命令。
    "scripts": {
        "start": "node index.js"
    },
//dependencies字段指定了项目运行所依赖的模块
    "dependencies": {
        "express": "latest",
        "mongoose": "~3.8.3",
        "handlebars-runtime": "~1.0.12",
        "express3-handlebars": "~0.5.0",
        "MD5": "~1.2.0"
    },
//devDependencies指定项目开发所需要的模块。
    "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",
    }
}

npm当然是Node.js的包管理工科具,但随着JS这几年的如日中天,未来的npm已经成了差不离全部跟JS相关的工具和软件包的处理工科具了,并且还在相连发展宏观中。

3. npm install –save app 与 npm install –save-dev app有怎样界别?

当您为您的模块安装3个借助模块时,通常情状下您得先安装他们(在模块根目录下npm install module-name),然后连同版本号手动将他们增加到模块配置文件package.json中的看重里(dependencies)。

--save--save-dev可以省掉你手动修改package.json文件的步调。
npm install --save module-name
自动把模块和版本号增多到dependencies部分
npm install --save-dve module-name
自动把模块和版本号增加到devdependencies部分
dependencies:生产信赖
devdependencies:开采正视

正文从作者的经历,计算了npm安装/卸载、更新、发布那个最要紧成效的不易行使姿势和一些小技术,顺便从官方网站搬来了npm三处理正视的最首要退换。

4.node_modules的追寻路线是何许的?

前后原则,先在当前目录下的node_modules上边找,要是没找到,逐级往上找,直到根目录。

npm3

npm共青团和少先队早已公布了npm3,近来有友人戏弄npm3安装软件包的时候相当慢,一开端作者也深感比较npm二慢了好些个,但透过了多少个版本的迭代,速度如同又快起来了。

慢的同桌是时候更新您的npm啦,而且事先设置进程条模糊成1坨的标题也曾经修复了。

皇家国际娱乐平台 2

npm v3.0安装react的截图

皇家国际娱乐平台 3

npm v3.8安装react的截图

npm提供了大气的指令,全数的通令大概都足以经过npm cmd
[options]的点子接纳。

5.npm3与 npm二比较有何革新?yarn和 npm 相比较有哪些优势?

npm叁相较于npm二来讲优化了借助包的管制。消除了windows上npm包目录太深的难点。
举个例子:
若是大家写了个模块App,供给设置四个包A@壹和C@一,其中A@1看重另3个包B@一,C@1注重B@二,用npm二和npm三安装之后的依赖图分别是这么的

皇家国际娱乐平台 4

Paste_Image.png

npm三根据设置顺序存放注重模块,先安装A@1,开采重视模块B@壹未有安装过也从未其他版本的B模块争辨,所以B@一存放在首先级目录,B@二为了制止和B@一的冲突,依然持续放在C@1之下。
npm2没怎么好说的,来什么安装什么,根本无须理会公共正视关系,重视模块1层1层往下存放就是了,上边保护教学npm三在这地点的精雕细琢。
近些日子App又须求设置三个包D@壹,D@一重视B@2,使用npm叁安装之后,包结构将改成下边那样

皇家国际娱乐平台 5

Paste_Image.png

虽说C@一和D@壹都注重B@二,不过由于A@一先安装,A@一正视的B@一已经设置到第超级目录了,后续必要设置的享有包B,只要版本不是1,都必要制止和B@1的争执,所以不得不像npm2一样,安装在相应包上面。
接着又安装了三个E@一,依赖B@壹,因为B@一已经设置过,且不会有版本抵触,这时候就不要再行设置B@壹了,包结构会产生那样

皇家国际娱乐平台 6

Paste_Image.png

随着App晋级了,必要把A@一升任到A@二,而A@贰注重B@二,把E@一晋级到E@2,E@二也重视B@二,那么B@一将不会再被何人依赖,npm将卸载B@壹,新的包结构将改成那样

皇家国际娱乐平台 7

Paste_Image.png

能够看到出现了冗余,结果跟预期的不同,既然全部对B的借助都以B@二,那么只设置一遍就够了。
npm dedupe
npm在安装包的时候从不这么“智能”,不过npm
dedupe命令做的事正是双重计算正视关系,然后将包结构整理得更客观。
进行贰次npm dedupe将取得

皇家国际娱乐平台 8

Paste_Image.png

npm -h

读书二个命令行工具,最简便直接的章程正是查看它的用户手册,npm提供了并不算很详细的下令行手册,能够因而npm
-h查看(unix用户还能通过man
npm查看,相对来讲比windows详细多了),供给某些npm命令更详尽的文书档案则需求通过npm
help cmd如npm help install来查看,注意不是 npm install help
,那样将会安装help包。

别的npm cmd -h也是叁个便捷查看命令能够怎么利用和搭配什么常用选项的章程。

yarn和 npm 比较有哪些优势?

  • Yarn 有三个锁定文件 (lock file)
    记录了被正好安装上的模块的版本号。每便只要新扩大了叁个模块,Yarn
    就能创设(或更新)yarn.lock
    这么些文件。这么做就保障了,每二遍拉取同2个种类信赖时,使用的都以一致的模块版本

  • Yarn在拉取包的时候,是采用了交互安装,所以相较于npm的列队安装的过程会快大多。

npm init

提起npm就只能说package.json,每3个npm包都必须有三个package.json文件,年轻时候的笔者还傻呵呵的从其余地方拷贝package.json过来然后修改,为了自动化还写了个自动生成的脚本。

新兴才开采原来npm自带此作用,官方原厂功用更加好更庞大,只须要施行npm
init就能够,以交互方式完毕package.json的创设。

假定想生成暗中认可package.json,能够进行npm init
-y,连交互式分界面都不会并发。

别的索要注意,npm
init的时候需求输入用户字段,假使还并未有设置npm用户,要求通过npm
addUser设置。

实际,最小单位的npm包正是只含有三个package.json文件的包,那样的话npm
init就做到了一个npm包的开创。

陆. webpack是什么?和别的同系列工具比有怎么着优势?

webpack是一款模块加载器兼打包工具,它能把各样能源,举例JS(含JSX)、coffee、样式(含less/sass)、图片等都当做模块来行使和拍卖。

webpack的优势:

  1. webpack 是以 commonJS 的方式来书写脚本,但对 速龙/CMD
    的支撑也很周到,方便旧项目展开代码迁移。
  2. 能被模块化的不唯有是 JS 了。
  3. 开荒方便人民群众,能代替部分 grunt/gulp
    的劳作,比方打包、压缩混淆、图片转base6四等。
  4. 扩大性强,插件机制健全,极其是支撑 React 热插拔(见
    react-hot-loader
    )的效用令人如今壹亮。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图