{"_id":"10.npm","_rev":"1-dd59b0f3a1720e246f51a1397a862d7a","name":"10.npm","dist-tags":{"latest":"2.0.0"},"versions":{"2.0.0":{"name":"10.npm","version":"2.0.0","description":"包管理工具  初始","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"work.cjl"},"bin":{"work.cjl":"bin/www"},"license":"ISC","dependencies":{"jquery":"^3.5.1"},"devDependencies":{"webpack":"^5.1.3"},"bundleDependencies":["jquery"],"gitHead":"37fabbbd311c555dac681b371ef6d1758400a28d","_id":"10.npm@2.0.0","_nodeVersion":"14.12.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GGHcidnGoqHj0Uqnu4sqdQSSjGwAuoP9jSoGNLSuxRVGtsyX/L1wk5/n3Q5bgfGIAWahAlmLMWF4hCzPcw2HMw==","shasum":"22d36b42a8fcbc7d6f6b4aa84755283a46c9b644","tarball":"https://registry.npmjs.org/10.npm/-/10.npm-2.0.0.tgz","fileCount":126,"unpackedSize":1322353,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfj4ZhCRA9TVsSAnZWagAALD4QAJKsrLSr8ekbsrJB60EQ\nbrwCpzlghnUiJShvnDPpxj1c34RcMRCmTMx6M1qJHshIzG18UVuSXCEoLadR\n9WmtAMm9bWfw1W3ZTBbgdNqX9gX4/ipzcCFQfAgp/ZGrqdn0yHxeg79xNocO\na+tF9ZF6WOhe4wa4Gtq2h9Vx0ST1BfpC/xs4QjnyIJsvFZRry/flOAK6BwR5\n8Gknu+5BWtbZrv4suf5hSRzGNQkY3YOkIPhaZZawkZ/tEiPQ3HSbxMsK8jL4\nlEiz1CHx+jJ7K8G6Ws3H/5LKS3TYuJz1HCh7jUQKnzKBBfbmISmysU4UGCM0\nEPYFYDOrjoWegb8A60Tc7iomv1uDUMaPiJqe8drPAPCSLpm4U2xX9xymV6CV\n29cK/deLe+F4fk2YBA251Lu2vY3HcYWSffx/t9+kkl3OJxW4lFskpHZjvMc4\nocVM7y6Tcuv6liewIBsrQHGaH7WC6Y08CuaTO5lYPzKyxv/NUdSsRmVYPqlg\nCRAX9k0mF1fMqrrmqunkk6ULmi1P/0Di6mNp337O1q3mn5kui8wq97me+5aJ\nCIrVcyiivI3aTu8sq4Ltah0UFI5dHtfzDOrJaeA9iCrfg+qzwlvnuSyMcs3H\nHkoHR4ZWK57xMWMs3B7ROtjRd9Q5UrT4RhAgfL2HZ2Kah+Oii5mx17WNmtby\nzoxN\r\n=o7Ih\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDBc9VG9EHziBPzTMfSuW3LbSyJI2msDg31l0E/yY/3tAiEAjeRiccHBlOmoq/I4Nrp+GtdUpio1irfS30RczsxchB4="}]},"maintainers":[{"name":"work.cjl","email":"work.cjl@hotmail.com"}],"_npmUser":{"name":"work.cjl","email":"work.cjl@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/10.npm_2.0.0_1603241569422_0.5983189399467963"},"_hasShrinkwrap":false}},"time":{"created":"2020-10-21T00:52:49.422Z","2.0.0":"2020-10-21T00:52:49.647Z","modified":"2022-04-04T10:09:56.352Z"},"maintainers":[{"name":"work.cjl","email":"work.cjl@hotmail.com"}],"description":"包管理工具  初始","author":{"name":"work.cjl"},"license":"ISC","readme":"## 初始化包\npackage.json\n```bash\nnpm init -y   #默认直接生成\n```\n\n## 下载包\n全局安装 在任意命令行下使用\n```bash\nnpm i http-server -g\n```\n>可以在命令行中使用\n/Users/chen/.nvm/versions/node/v14.12.0/bin/http-server -> /Users/chen/.nvm/versions/node/v14.12.0/lib/node_modules/http-server/bin/http-server\n/Users/chen/.nvm/versions/node/v14.12.0/bin/hs -> /Users/chen/.nvm/versions/node/v14.12.0/lib/node_modules/http-server/bin/http-server\n\n1.当前的/Users/chen/.nvm/versions/node/v14.12.0/bin全局目录下多了一个http-server的文件，然后指向了下载后的node_modules文件夹下对应目标的bin目录的文件，这样子就可以在命令行中去使用http-server\n2.缩写-》真正的下载目录\n3.总结：前者只是一个快捷键，后者是对应的真正下载目录\n\n- 写一个全局包\n1.建立一个bin目录，里头建立一个www文件\n2.告诉系统使用符号#！，使用什么目录呢？使用“当前有病的环境”：/usr/bin/env，什么环境呢？node\n3.所以写了-》  #! /usr/bin/env node\n4.在package.json里头配置\"bin\": { \"work.cjl\": \"./bin/www\"},使得有办法在命令行写下worck.cjl，回车后，然后就可以指向bin/www这个文件\n5.进入了www文件以后，这个文件又会告诉你使用当前有病的环境来执行，什么环境呢？就是node环境，这句话的代码：#! /usr/bin/env node\n6.但是目前直接输入work.cjl还是无法生效的。因为最终想要的效果是在/Users/chen/.nvm/versions/node/v14.12.0/bin中拥有/work.cjl这个目录，然后能够产生链接指向/Users/chen/.nvm/versions/node/v14.12.0/lib/node_modules中,方法一是将这个包放线上，但很慢这样子，不太可能开发一点下载一点\n7.方法二：使用npm link命令，把当前package.json中\"bin\"下的命令\"bin\": {\n    \"work.cjl\": \"./bin/www\"\n  },链接到/Users/chen/.nvm/versions/node/v14.12.0/bin中成为/Users/chen/.nvm/versions/node/v14.12.0/bin/work.cjl快捷键，并且指向的是当前我们这个10.npm的目录中来。\n8.在当前目录10.npm敲下npm link后\n```bash\n/Users/chen/.nvm/versions/node/v14.12.0/bin/work.cjl -> /Users/chen/.nvm/versions/node/v14.12.0/lib/node_modules/10.npm/bin/www\n/Users/chen/.nvm/versions/node/v14.12.0/lib/node_modules/10.npm -> /Users/chen/Documents/Code/zhufeng-code/10.npm\n```\n我们发现确实在/Users/chen/.nvm/versions/node/v14.12.0/bin多了一个work.cjl,然后指向了一个链接/Users/chen/.nvm/versions/node/v14.12.0/lib/node_modules/10.npm/bin/www，然后这个链接又指向了当前这个目录/Users/chen/Documents/Code/zhufeng-code/10.npm\n9.总结：npm link命令创建了链接指向了我的当前目录，让我能够方便使用命令行\n\n- 本地安装\n```bash\nnpm i jquery --save  / -S\nnpm i webpack --save-dev / -D\n```\n默认不给--save表示安装到当前的dependences,表示是上线和开发的时候都需要\ndependencies 开发依赖，上线不需要了\n\n区别：比如有一天把模块发布了，人家安装我的模块，那我的模块中的dependencies就会默认被拉去下来，但是devdependencies就不会，所以开发依赖万一安装到这里头来了，导致上线要用的找不到，别人这头是没法安装找到对应依赖的。\n\n清楚npm 缓存 ： sudo npm cache clean --force\n常见的依赖项\ndependencies\ndevDependencies\npeerDependencies 会提示你安装缺少的模块，同时需要安装一定的版本，版本不同就报错\nbundleDependencies 打包时依赖\noptionsDependencies 可选择依赖，如果找不到不会影响npm下载\n\n\nnpm install --production 只安装生产环境的依赖，也就是不安装devDependencies的依赖\nnpm pack 将项目打包，打包的时候是不会将node_modules的依赖打包进去，所以配置bundleDependencies:['jquery']就可以将依赖打包进来了。\n\n## 版本问题\n- npm使用了1.0.0 \n  如果第一位变了，表示不兼容老代码，是大规模的更新\n  如果第二位变了，表示增加了一些功能\n  如果第三位变了，表示修复了一些小bug\nnpm version major || minor || patch可以更改版本好，并且同步到git tag\n\n- 符号区别\n^2.0.0  只要不到3都可以，不可以小过2。 ^负责表示第一位控制\n~2.1.0  只要不超过1就可以 ～负责表示第二位控制\n>=2.1.0\n<=2.0.0\n\n- beta是内测，测试用的\n\n## 协议问题\n\n\n## 脚本问题\n```bash\n\"script\": {\n  \"test\": \"xxxxxx\"\n}\n```\nscripts 配置执行的脚本\n1）执行命令 echo xxx\n2) 执行node_modules下的文件\n   \n- 当我执行npm run的时候，他会把当前目录node_modules/.bin也临时拷贝到系统path目录下，不过是临时的，执行后就没了。\n因此npm run 可以执行.bin下的文件\n\n- 或者使用npx可以执行执行node_modules上的bin，这个就更简单，压根不需要配置scripts。如果模块不存在，它还会自动帮你安装，安装使用完后还会立即销毁。相当于临时借来用，然后还回去。这个的好处是避免我们安装全局模块，比如cra脚手架，如果按到全局，一辈子就不更新了。如果使用了npx那就可以随时借来新的脚手架来用。\n\n## 发布\n1.发布包的时候，会发现@vue/cli @vue/service类似的写法。这个是发表作用域包\n2.发布包需要先切换到npm官方上\nnpm会有配置文件，使用cat ~/.npmrc查看\n3.npm login\n\n- nrm nvm npm\nnrm负责包源管理\nnvm负责版本管理\nnpm负责包管理\n```bash\nnpm install nrm -g\nnrm ls\nnrm use npm \n```\n```bash\n\n```","readmeFilename":"README.md"}