Open xiaochengzi6 opened 2 years ago
npm install <package_name>
命令执行之后将会在当前的目录下创建一个 node_modules 的目录(如果不存在的话),然后将下载的包保存到这个目录下。
node_modules
默认是在本地也就是这个文件夹下安装包。瞎子啊问的文件保存在node_modules目录下的 .bin中。
.bin
可以选择去全局安装
全局安装
npm install -g <package_name>
局部安装
全局安装目录可以使用以下命令查看地址。
全局安装目录
npm root -g 或者 在 运行 中输入 %AppData%/npm 打开此文件夹
本地安装目录:node_modules
本地安装目录
离线安装:
npm install --cache-min Infinity <package-name>
但是,这并不等于离线模式,这时[仍然需要](https://github.com/npm/npm/issues/2568#issuecomment-172430897)网络连接。因为现在的--cache-min实现有一些问题。
--cache-min
(1)如果指定模块不在缓存目录,那么 npm 会连接 registry,下载最新版本。这没有问题,但是如果指定模块在缓存目录之中,npm 也会[连接 registry](https://github.com/npm/npm/issues/2568#issuecomment-171472949),发出指定模块的 etag ,服务器返回状态码304,表示不需要重新下载压缩包。 (2)如果某个模块已经在缓存之中,但是版本低于要求,npm会[直接报错](https://github.com/npm/npm/issues/8581),而不是去 registry 下载最新版本。
(1)如果指定模块不在缓存目录,那么 npm 会连接 registry,下载最新版本。这没有问题,但是如果指定模块在缓存目录之中,npm 也会[连接 registry](https://github.com/npm/npm/issues/2568#issuecomment-171472949),发出指定模块的 etag ,服务器返回状态码304,表示不需要重新下载压缩包。
(2)如果某个模块已经在缓存之中,但是版本低于要求,npm会[直接报错](https://github.com/npm/npm/issues/8581),而不是去 registry 下载最新版本。
查看registry
npm config get registry //设置淘宝镜像源 npm config set registry https://registry.npm.taobao.org //将代理为空 npm config set proxy null
[2]:查看全局目录 ,npm install load -g下载的位置就在全局目录的node_modules
npm install load -g
npm config get prefix
设置全局目录
npm config set prefix “目录路径”
npm i 就会把package.json这个配置文件里面所有的依赖项,包括-D,-S安装的(这都是我们的依赖项),它都会自动的把所有的依赖项原封不动的安装好 npm i 或者 npm install
npm i 就会把package.json这个配置文件里面所有的依赖项,包括-D,-S安装的(这都是我们的依赖项),它都会自动的把所有的依赖项原封不动的安装好
npm i 或者 npm install
如果你希望,一个模块不管是否安装过,npm 都要强制重新安装,可以使用-f或--force参数。
-f
--force
npm install <package_Name> --force
更新本地包
更新
在该目录下键入
npm update <package_name>
1:npm update命令怎么知道每个模块的最新版本呢?
npm update
答案是 npm 模块仓库提供了一个查询服务,叫做 registry 。以 npmjs.org 为例,它的查询服务网址是 https://registry.npmjs.org/ 。
https://registry.npmjs.org/
这个网址后面跟上模块名,就会得到一个 JSON 对象,里面是该模块所有版本的信息。比如,访问 https://registry.npmjs.org/react,就会看到 react 模块所有版本的信息。
https://registry.npmjs.org/react
它跟下面命令的效果是一样的。
$ npm view react # npm view 的别名 $ npm info react $ npm show react $ npm v react
registry 网址的模块名后面,还可以跟上版本号或者标签,用来查询某个具体版本的信息。比如, 访问 https://registry.npmjs.org/react/v0.14.6 ,就可以看到 React 的 0.14.6 版。
返回的 JSON 对象里面,有一个dist.tarball属性,是该版本压缩包的网址。
dist.tarball
dist: { shasum: '2a57c2cf8747b483759ad8de0fa47fb0c5cf5c6a', tarball: 'http://registry.npmjs.org/react/-/react-0.14.6.tgz' },
到这个网址下载压缩包,在本地解压,就得到了模块的源码。npm install和npm update命令,都是通过这种方式安装模块的。
npm install
删除本地包
npm uninstall <package_name>
卸载
npm rm <package.name>
顺便也会删除package.json依赖项 不管是devDependencies还是dependencies
package.json
devDependencies
dependencies
更新全局包
npm update -g <package_name>
卸载全局包
npm uninstall -g <package_name>
顺便这里来看一下package.json的内容
{ "name": "webpack", "version": "1.0.0", "description": "", "private": true, "scripts": { "test": "echo \"Error: no test specified\" && exit 1", }, "keywords": [], "author": "", "license": "ISC", "devDependencies": {}, "dependencies": {} }
他们都是一个配置模块依赖的模块列表,key是模块名称,value是保本范围。
注意这两个:
"devDependencies": {}, "dependencies": {}
devDependencies用于本地环境开发时候。 dependencies用户发布环境[线上]
[2]:--save-dev <----->( devDependencies ) --save <------->( dependencies )
--save-dev <----->( devDependencies ) --save <------->( dependencies )
如果您要开发一个包,例如下载源码(例如通过git clone),转到包含 的根目录package.json,然后运行:
git clone
既然你有实际的源代码,很明显你想要开发它,所以默认情况下,dependencies(因为你当然必须运行才能开发)和devDependency依赖项也被安装了。总结的来说:npm install 将安装所有依赖项。
devDependency
npm install 将安装所有依赖项。
//npm install npm-clean --save-dev npm-clean //这个插件将会清空dependencies
如果您不想安装 devDependencies,您可以使用 npm install --production
npm install --production
但作用都不同devDependencies是属于开发环境在本地开发的时候使用的模块,而dependencies是生产环境依赖,代码发布上线时使用的依赖。
用例:
npm install --save-dev load
打包时可以通过webpack.config.js中的mode:'development'和mode:'production来控制是否
webpack.config.js
mode:'development'
mode:'production
是开发环境还是生产环境,前者是开发环境,后者是生产环境,默认是生产环境。
使用npm install <package_nam> --save-dev可将包下载到本地并且也会将依赖项添加到devDependencies依赖项中
npm install <package_nam> --save-dev
使用--save会加载到dependencies依赖中
--save
npm install <package_nam> --save
默认会加载的dependencies中
npm install <package_nam>
npm传参
npm run stater -- --port
传入参数要使用--标明。
--
npm执行多个任务需要明确它的顺序和关系 如果是并行执行(即同时的平行执行),可以使用&符号。
&
继发执行(即只有前一个任务成功,才执行下一个任务),可以使用&&符号。
&&
"scripts": { "test": "echo \"Error: no test specified\" && exit 1", "sk": "npm run oo & npm run push" },
或者使用 npm-run-all插件
npm install --save-dev npm-run-all //之后 //package.json "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "oo": "node npm-demo1.js", "push": "node npm-demo2.js", "jj": "npm-run-all -p push oo" },
[npm-run-s]表示顺序,[npm-run-p]表示并行
[npm-run-s]
[npm-run-p]
npm 脚本有pre和post两个钩子。举例来说,build脚本命令的钩子就是prebuild和postbuild。
pre
post
build
prebuild
postbuild
{ "scripts": { "prepush": "node npm-demo1.js", "push": "node npm-demo2.js", "postpush": "node npm-demo3.js" }, } //依次运行脚本
这里省略了两个知识点
(1).获得package.js的属性名或值 (2):脚本的运行
(1).获得package.js的属性名或值
(2):脚本的运行
1 2 3
安装
命令执行之后将会在当前的目录下创建一个
node_modules
的目录(如果不存在的话),然后将下载的包保存到这个目录下。默认是在本地也就是这个文件夹下安装包。瞎子啊问的文件保存在
node_modules
目录下的.bin
中。可以选择去
全局安装
局部安装
全局安装目录
可以使用以下命令查看地址。本地安装目录
:node_modules
离线安装:
但是,这并不等于离线模式,这时[仍然需要](https://github.com/npm/npm/issues/2568#issuecomment-172430897)网络连接。因为现在的
--cache-min
实现有一些问题。查看registry
[2]:查看全局目录 ,
npm install load -g
下载的位置就在全局目录的node_modules设置全局目录
更新&卸载
如果你希望,一个模块不管是否安装过,npm 都要强制重新安装,可以使用
-f
或--force
参数。更新
本地包在该目录下键入
1:
npm update
命令怎么知道每个模块的最新版本呢?答案是 npm 模块仓库提供了一个查询服务,叫做 registry 。以 npmjs.org 为例,它的查询服务网址是
https://registry.npmjs.org/
。这个网址后面跟上模块名,就会得到一个 JSON 对象,里面是该模块所有版本的信息。比如,访问
https://registry.npmjs.org/react
,就会看到 react 模块所有版本的信息。它跟下面命令的效果是一样的。
registry 网址的模块名后面,还可以跟上版本号或者标签,用来查询某个具体版本的信息。比如, 访问 https://registry.npmjs.org/react/v0.14.6 ,就可以看到 React 的 0.14.6 版。
返回的 JSON 对象里面,有一个
dist.tarball
属性,是该版本压缩包的网址。到这个网址下载压缩包,在本地解压,就得到了模块的源码。
npm install
和npm update
命令,都是通过这种方式安装模块的。删除本地包
卸载
顺便也会删除
package.json
依赖项 不管是devDependencies
还是dependencies
更新全局包
卸载全局包
package.js注意事项
顺便这里来看一下
package.json
的内容他们都是一个配置模块依赖的模块列表,key是模块名称,value是保本范围。
注意这两个:
[2]:
--save-dev <----->( devDependencies ) --save <------->( dependencies )
如果您要开发一个包,例如下载源码(例如通过
git clone
),转到包含 的根目录package.json
,然后运行:既然你有实际的源代码,很明显你想要开发它,所以默认情况下,
dependencies
(因为你当然必须运行才能开发)和devDependency
依赖项也被安装了。总结的来说:npm install 将安装所有依赖项。
如果您不想安装 devDependencies,您可以使用
npm install --production
但作用都不同
devDependencies
是属于开发环境在本地开发的时候使用的模块,而dependencies
是生产环境依赖,代码发布上线时使用的依赖。用例:
打包时可以通过
webpack.config.js
中的mode:'development'
和mode:'production
来控制是否是开发环境还是生产环境,前者是开发环境,后者是生产环境,默认是生产环境。
使用
npm install <package_nam> --save-dev
可将包下载到本地并且也会将依赖项添加到devDependencies
依赖项中使用
--save
会加载到dependencies
依赖中默认会加载的
dependencies
中npm script
npm传参
传入参数要使用
--
标明。npm执行多个任务需要明确它的顺序和关系 如果是并行执行(即同时的平行执行),可以使用
&
符号。继发执行(即只有前一个任务成功,才执行下一个任务),可以使用
&&
符号。或者使用 npm-run-all插件
[npm-run-s]
表示顺序,[npm-run-p]
表示并行npm 脚本有
pre
和post
两个钩子。举例来说,build
脚本命令的钩子就是prebuild
和postbuild
。这里省略了两个知识点
1 2 3