最近公司提出一个需求需要创建一个公共项目集成出来供几个项目使用,突然想到可以使用npm来达到目的,但是俺完全不会,便开始面向百度开发,经过验证确实可行。可是如果要使用npm包的话又需要在公司内网又要构建一个自己公司的包管理系统,越搞越麻烦了,最后使用git的子模块实现了这个需求,以下是我面向百度开发总结出来的经验
npm常见命令
1. npm install 包 -S // npm install webpack -S
2. npm install 包 --save-dev // npm install webpack --save-dev
3. npm install 包 // npm install webpack
//上面三种命令功能都一样都是为项目安装运行时所需要的包,可在package.json
里面的dependencies查看
npm install 包 -g //全局安装 npm install webpack -g
npm uninstall 包 -g //全局卸载 npm in satll webpack -g
npm uninstall 包 //卸载包 npm uninstall webpack -g
包 -v //查看包版本 webpack -v
npm update //根据package.json 更新项目的包
npm cache clean //清除npm本地缓存
npm install 包名@1.0.0 //安装指定版本的包 npm install mockjs@1.0.0
npm view 包名 //查看包的详细信息 eg:npm view webpack
npm地址设置和恢复
-安装淘宝镜像源,安装好后可以使用cnpm代替npm命令进行包的安装
npm install -g cnpm --registry=https://registry.npm.taobao.org
- 设置淘宝镜像源
npm config set registry https://registry.npm.taobao.org
-查看当前镜像源
npm config get registry
-恢复默认镜像源 发布包的时候一定要恢复默认镜像源
npm config set registry https://registry.npmjs.org
-安装nrm
npm install nrm -g
安装好后使用nrm ls查看可以使用的镜像源

package.json基本介绍和npm脚本
npm脚本我的理解就是npm run [命令]
如下面配置的package.json npm run mytest
{
"name": "get_data", //包名
"version": "1.0.0", //包版本
"description": "",//包的描述
"main": "index.js",//引用npm包的时候首选main里面的路径,如果没有main默认index.js
//"在使用某些包的时候如打包。使用nodemon运行项目的时候可以在scripts里面进行配置,使用npx nodemon ./index.js让这个js文件持续运行,但是可以在这里配置后使用npm run runnodemon实现运行npx nodemon ./index.js",
"Npm环境配置":"process.env表示自己电脑的全局环境变量 可以在电脑上设置一个永久环境变量{NODE_ENV:”testing”}后在js文件里面直接打印console.log(process.env.NODE_ENV);",
"scripts": {
"设置临时环境变量test使用node运行index.js;对于mac电脑而言使用export代替set,所以需要使用cross-env(跨越电脑环境),先安装(npm install cross-env)":"set test=xx && node index.js",
start,end,tes"运行这个的时候可以直接npm start
"start":"node index.js"
"runnodemon":"npx nodemon ./index.js",
"test": "echo \"Error: no test specified\" && exit 1",
"mytest":"set test=xx && node test.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^0.26.1",
"cheerio": "^1.0.0-rc.10",
"nodemon": "^2.0.15"
}
}
将下面两个文件复制粘贴到本地可进行测试运行的时候使用npm run mytest
index.js
console.log(process.env.test)//打印结果xx
package.json
{
"name": "get_data",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"mytest":"set test=xx && node test_nodemon.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^0.26.1",
"cheerio": "^1.0.0-rc.10",
"nodemon": "^2.0.15"
}
}
关于npm包的语义化知识cloud.tencent.com/developer/s…
手牵手教你npm发包
建一个文件夹 然后npm init 新建一个index.js文件 index.js
function add(a,b){
return a+b;
}
module.exports={
add,
}
到这里一个包的基本结构便有了
接下来是进行发包
首先你要有一个npm账号在www.npmjs.com/signup注册之后进行下面的操作
npm login 登录npm
npm whoami 查看当前登录的账号
npm logou 退出登录
npm publish 发布包
检查自己的pacakge.json里面的private设置成false。如果为true的话是私有包便不能进行发布。建议直接去掉,我发包的时候设置成false还是报了下面的错 下面的报错信息意思是package.json被标记成了私有包
npm ERR! code EPRIVATE
npm ERR! This package has been marked as private
npm ERR! Remove the 'private' field from the package.json to publish it.
将npm源设置成默认的镜像源,设置之后建议使用npm config get registry查看是不是自己设置的镜像源
npm config set registry https://registry.npmjs.org
输入命令npm login会依次出现以下信息
- Username: 输入自己的npm用户名
- Password:输入自己的npm密码(这里输入的时候不会显示密码别慌,输入正确即可)
- Email: (this IS public):输入注册npm的邮箱
- Enter one-time password from your authenticator app:这里等待一下npm会给你的邮箱发送验证码,将验证码输入即可 没有报错就代表登录成功,当然你也可以使用npm whoami查看你登录上没有
最后的最后输入命令npm publish如果没有报错的话就成功的发包成功了(复制发布成功后的包名去npm搜索你的包)
如果出现以下报错信息有可能的原因是你package.json里面的name已经被人发布过了,更改这个name来个骚气的即可 如果改name也不能解决建议直接复制当前的报错信息去百度吧
npm ERR! 403 403 Forbidden - PUT https://registry.npmjs.org/mynpm - You do not have permission to publish "mynpm". Are you logged in as the correct user?
npm ERR! 403 In most cases, you or one of your dependencies are requesting
npm ERR! 403 a package version that is forbidden by your security policy, or
npm ERR! 403 on a server you do not have access to.
end
- 先建一个文件夹 然后npm init一哈
- 再然后npm install npm i mynpmxxxx (mynpmxxxx是我刚刚发布的包名)
- 再建一个index.js
var test = require('mynpmxxxx')//引入刚刚发布的包
console.log(test.add(1,2))//调用mynpmxxxx包里面的add方法并打印 打印结果3
再node index.js一下,或者在html引入这个index.js测试下
最后再说一句对于组件的发包其实也一样,只不过需要配合install。可以在安装element-ui包查看人家是怎么写的。
blog.csdn.net/tww84447500… juejin.cn/post/700019… blog.csdn.net/weixin_3863… blog.csdn.net/qq_41648452… blog.csdn.net/weixin_3069… blog.csdn.net/KimBing/art… juejin.cn/post/705230…