1.如何全局安装一个 node 应用?
安装:npm install -g 模块名
卸载:npm uninstall -g 模块名
从国内镜像安装应用:cnpm install -g 模块名 --overbose
查看:模块名 -v 显示模块版本
加参数-g会将应用模块安装到:/user/local/bin目录下,不加参数-g默认安装模块到当前目录下的mode-modules文件夹下:./node-modules
2.package.json 有什么作用?
package.json文件定义了当前项目的各种配置信息和参数,比如项目名称版本作者以及构建该项目所必须的依赖等,package.json是一个严格的json文件。开发项目前在当前文件夹下用npm init 命令可将该文件夹初始化为npm文件夹。初始化后会生成package.json文件,重要参数如下:
"main":"./index.js",
main字段指定了加载的入口文件,require('moduleName')
就会加载这个文件。这个字段的默认值是模块根目录下面的index.js。
"bin":{
‘name1': "./bin/server',
'name2':"./bin/mock"
}```
bin参数是{ 命令名:文件名 }的格式,bin即代表二进制。bin参数指定了各个内部命令对应的可执行文件的位置,相当于在/user/local/bin下创建了内部命令的快捷方式。执行name1,name2相当于在/user/local/bin下执行server和mock命令。./bin/xxx文件的头部要写上#!/usr/bin/env node, 表示以node运行这个二进制文件
"script":{
'start' : "node app.js" //执行当前目录下app.js
}
可将开发中一系列复杂或者繁琐的操作一次编辑完并给其指定一个代号(keyName),在执行环境下只要直接输入对应的keyName即可批处理执行,提高开发效率。
"repository":{
'type': "git",
'url': '....'
}
该包在github上的代码托管仓库地址。用git init初始化文件夹后再用npm init初始化,npm会检测到git的设置,之后发布完并且git push后用户便可以在npm社区对应项目下访问package的github。
```"dependencies"```项目依赖,项目执行时所必须的依赖。
```"devDependencies" ```开发依赖,项目在开发过程中会用到的依赖,但项目运行时不一定会用到。
***
#####3. npm install --save app 与 npm install --save-dev app有什么区别?
npm install -save xxx会将依赖xxx模块安装在局部,同时将xxx保存到package.json中的dependencies字段中。在package.json文件夹下执行npm install时会自动下载这些项目依赖。
npm install -save-dev xxx会将依赖xxx安装在局部,同时将xxx保存到package.json中的devDependencies字段中。通过npm install命令不会自动下载这些依赖,必须通过手动下载。
***
#####4.nodule_modules的查找路径是怎样的?
1.require的内容以./或者../开头的按照正常的查找路径。
2.require内容不加./或者../查找的js文件(非核心模块)。先从当前目录下的nodule_modules查找,不存在就依次向上递归查找,到上级目录的nodule_modules中查找,直到系统根目录。node全局安装在系统根目录下,所以全局安装后可在所有目录下使用。当找到匹配的路径后会先读取文件夹下的package.json文件,通过main字段找到入口js文件。
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2453530-6345f7259c2335ef.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
***
#####5.使用 webpack 替换使用 requriejs
[预览地址](http://book.jirengu.com/jirengu-inc/jrg-renwu6/homework/%E8%A6%83%E5%AE%B4%E5%B3%B0/senior6/index-module.html)
[代码地址](https://github.com/jirengu-inc/jrg-renwu6/tree/master/homework/%E8%A6%83%E5%AE%B4%E5%B3%B0/senior6)
***