输入如下命令之后,会要求填写基本的配置信息,这里,我们选择一路回车即可,待生成 package.json 文件之后,再来配置。
npm init
当然,.json 文件是不允许写注释的,这里只是方便大家阅读而已
{
// 包的名称
"name": "sg-utils",
// 包的版本号
"version": "1.4.6",
// 包的描述
"description": "javascript通用工具类",
// 包的入口文件
"main": "index.js",
// 上传npm的白名单,即被允许上传的文件
"files": [
"src",
"demo",
"index.js"
],
// 指定了运行脚本命令的npm命令行缩写
"scripts": {
"start": "node server.js"
},
// 远程代码仓库
"repository": {
"type": "git",
"url": "https://github.com/shiguang0116/sg-utils"
},
// 关键字
"keywords": [
"javascript",
"util"
],
// 作者
"author": "guang.shi",
// 许可证数组
"license": "ISC",
// 提交bug的地址
"bugs": {
"url": "https://github.com/shiguang0116/sg-utils/issues"
},
// 包的主页
"homepage": "https://github.com/shiguang0116/sg-utils#readme",
// 运行引擎,指明node.js运行所需要的版本
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
},
// 开发环境的依赖包列表
"devDependencies": {
"eslint": "^5.16.0",
"eslint-config-vui": "^0.2.7",
"eslint-plugin-html": "^5.0.5"
},
// 生产环境的依赖包列表
"dependencies": {},
// 依赖包列表
"peerDependencies": {}
}
.
--save-dev
--save
- 我们开发webpack-plugin-a@1.0.0的时候是针对webpack@2.0.0来开发的;
- webpack发布了最新的webpack@3.0.0并且做了不兼容升级,导致webpack-plugin-a@1.0.0已经不能在该版本使用;
- 有不明真相的开发者,安装了webpack@3.0.0和我们的webpack-plugin-a@1.0.0;
- 由于webpack版本不兼容,当该开发者执行编译的时候肯定是要报错的。那么如何避免这种问题的发生呢?这就需要在webpack-plugin-a@1.0.0的package.json中添加如下配置:
"peerDependencies": {
"webpack": "^2.0.0"
}
UNMET PEER DEPENDENCY webpack@3.0.0
npm WARN webpack-plugin-a@1.0.0 requires a peer of webpack@^2.0.0 but none was installed
.
如果对“语义化版本号变更”不了解的,可以参考文章:https://blog.csdn.net/guang_s/article/details/84991304
npm install --save sg-utils
会在 package.json 中添加 “sg-utils”: “^1.4.6”。这个符号会告诉npm可以安装 1.4.6 或者一个大于它的版本, 但是要是主版本 1 以下的版本;npm config set save-prefix=''
来设置默认符号。.
npm更新到v5.x.x以后,会出现一种新的自动生成文件 package-lock.json,如果打开这个文件,会发现它看着像 package.json 里面的依赖。那么,它究竟是做什么用的呢?
npm install sg-utils --save-dev
,我们本地使用的版本是 ^1.4.6,这时 package.json 记录的版本号也是 ^1.4.6;npm install
。这个时候,项目安装的 sg-utils 就是 在主版本 1 以下的最新版本 (比如更新到了 1.4.7,两个版本之前修改了一个bug),那么本地安装的就是 1.4.7;.
【node使用】发布一个自己的npm包
【node使用】搭建一个web服务器
【node使用】package.json详解以及package-lock.json的作用
【node使用】path模块
【node使用】glob匹配模式
【node使用】fs模块
【node使用】实现console输出不同颜色