初始化包
package.json
1 | npm init |
下载包
全局安装 在任意命令行下使用
1 | npm i http-server -g |
可以在命令中使用
1 | /usr/local/bin/http-server -> /usr/local/lib/node_modules/http-server/bin/http-server |
现在我在命令行里面http-server起这个服务,其实就是调取/usr/local/lib/node_modules/http-server/bin/http-server这个下的服务 line2是缩写 可以在命令行hs起服务
现在我要写一个全局包,npm link链接,创建快捷方式指向我的文件
1 | "bin": { |
- 本地安装
1 | npm install jquery --save / -S |
默认不给- -save表示安装到当前的dependencies 表示是上线和开发的时候都需要
devDependencies 开发依赖 上线的时候不需要
有一天把模块发布了 别人会安装你的发布的模块,如果你的模块被别人安装,你的模块中的dependencies会默认一起被下载,devDependencies不会下载的
sudo npm cache clean --force
如果按装包按了一半挂了,可以用这个清空看看
常见的依赖项
dependcies
devDepencies
npm install –production 可以只安装dependcies
peerDependencies 会提示你安装缺少的模块 默认要求带版本
bundleDependencies 放置后面打包项 npm pack打包
optionalDependencies 如果找不到 不会影响npm的下载
版本问题
- npm使用了 1.0.0 第一位如果变了 表示不兼容老代码 大规模的更新
第二位表示增加了一些功能
第三位 表示小的补丁
npm + git
npm version major minor patch 更改版本 并且可以同步 git tag
npm采用了semver规范作为依赖版本管理方案。semver 约定一个包的版本号必须包含3个数字
- MAJOR 对应大的版本号迭代,做了不兼容旧版的修改时要更新 MAJOR 版本号
- MINOR 对应小版本迭代,发生兼容旧版API的修改或功能更新时,更新MINOR版本号
- PATCH 对应修订版本号,一般针对修复 BUG 的版本号
range | 含义 | 例 |
---|---|---|
^2.2.1 |
指定的 MAJOR 版本号下, 所有更新的版本 | 匹配 2.2.3 , 2.3.0 ; 不匹配 1.0.3 , 3.0.1 |
~2.2.1 |
指定 MAJOR.MINOR 版本号下,所有更新的版本 | 匹配 2.2.3 , 2.2.9 ; 不匹配 2.3.0 , 2.4.5 |
>=2.1 |
版本号大于或等于 2.1.0 |
匹配 2.1.2 , 3.1 |
<=2.2 |
版本号小于或等于 2.2 |
匹配 1.0.0 , 2.2.1 , 2.2.11 |
1.0.0 - 2.0.0 |
版本号从 1.0.0 (含) 到 2.0.0 (含) | 匹配 1.0.0 , 1.3.4 , 2.0.0 |
预发版:
- alpha(α):预览版,或者叫内部测试版;一般不向外部发布,会有很多bug;一般只有测试人员使用。
- beta(β):测试版,或者叫公开测试版;这个阶段的版本会一直加入新的功能;在alpha版之后推出。
- rc(release candidate):最终测试版本;可能成为最终产品的候选版本,如果未出现问题则可发布成为正式版本。
你们项目如何发版
协议问题
http://www.ruanyifeng.com/blogimg/asset/201105/free_software_licenses.png
scripts
scripts 配置执行的脚本
1) 执行命令 echo xxx
2) 执行node_modules/.bin下的文件
当我在命令行执行npm run 的时候 他会把当前目录node_modules/.bin也拷贝到当前的系统的path中,所以npm run 可以执行.bin下的文件 (npm run env 试下,搜索path 可以看到当前目录下的bin放在了path环境下)
npx
可以直接执行node_modules/.bin文件 不需要在去配置scriprts
如果模块不存在可以安装 ,安装完是有后还会自己销毁,避免安装全局模块
比如:npm create-react-app project-name 这样create-react-app就会一直存在也没有版本更新
比如:npx create-react-app project-name 不会安装create-react-app 这样每次执行的都是最新的包
发布
发布包的时候 @vue/cli @vue/service
先切换到npm官方上 (npm配置文件 cat ~/.npmrc)
nrm可以切换源 nvm npm
1 | npm install nrm -g |