Node-npm

初始化包

package.json

1
npm init

下载包

全局安装 在任意命令行下使用

1
npm i http-server -g

可以在命令中使用

1
2
/usr/local/bin/http-server -> /usr/local/lib/node_modules/http-server/bin/http-server
/usr/local/bin/hs -> /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
2
3
4
"bin": {
"lesson-jf": "./bin/www",
"lz":"./bin/www"
},
  • 本地安装
1
2
npm install jquery --save / -S
npm install webpack --save-dev / -D

默认不给- -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
2
3
npm install nrm -g 
nrm ls
nrm use npm