Node.js一个非常强大的地方,也就npm了.
npm is the package manager for JavaScript.
Node.js的包分为两部分,一个是全局的包,一个是本地项目的包.一般来说,我们只有本地的包就可以了.但是一些命令功能的,则需要放到全局包的地方.一般情况下,这些命令会以cmd的形式存放在C:\Users\用户名\AppData\Roaming\npm目录下面.
如:我用npm install typescript -g安装了typescript,就会多一个tsc.cmd命令,然后在命令提示符下面输入tsc了
下面是tsc.cmd的内容
-------------------------------------------------------------------------------------
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\node_modules\typescript\bin\tsc" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\node_modules\typescript\bin\tsc" %*
)
-------------------------------------------------------------------------------------
在node的开源项目中,每个包又会依赖其它的的开源项目,这些被依赖的通过package.json描述并放在node_modules目录下面,问题是每个包的依赖项,都会放在各种的node_modules目录下面,结果就出现了层层嵌套并有大量的冗余依赖包. 可能一个几十K的代码,完整依赖包达到几百M或上G,这个就有点呵呵了.
在windows下面,就会报max_path的错误,于是在正常的情况下,是删除不掉的.
于是:npm提供了一个命令叫npm ddp或npm dedupe来将这些依赖收深度变成广度,也就是将重复或目录很深的,移到当前的node_modules
虽然有这个命令,但还是会出现超过max_path的情况
目录我知道有两种办法:
1.就在进入到node_modules稍为深的目录,然后用ctrl+x命令,剪切到当前盘符的根目录下面,然后删除就可以了,如果还不行,就再把更深的剪切出来,依此,就可以删除目录了.
2.在win10的linux子系统下,用rm命令删除目录就可以了
用npm命令安装,没有加-g参数的,表示是安装到当前目录
一般情况下,要用npm初始化工程
1.先创建好指定的目录
2.在控制台进入到这个目录,输入 npm init 然后按照提示输入 这个时候,就会发现多一个package.js
然后创建一个index.js,这样,你就有了一个最原始的node项目了
最后,不能所有的东西都是重造车轮,所以一般的情况下,我们会使用第三方开源库
就用npm install 包名 命令
如:npm install express 为了便于移动,我们需要把依赖的库保存 用--save选项
如:npm install express --save
有些仅是开发上用到的如babel之类的,只需要用选项: --save-dev
安装完成后,打开package.json,就会发现有新的依赖内容
安装完成后,可以用npm uninstall来卸载就可以.
一般情况下,发布的时候,不会把依赖在node_modeule一起打包出去,这个时候只需要把node_module之外的全部打包,然后在新的环境或目录下面,输入npm install就会自动把依赖的包全部安装