导航
导航
文章目录
  1. 概述
  2. 使用
    1. 必须内容
    2. 自动创建
    3. 指定依赖安装包
    4. npm script
    5. 其他
  3. 参考资料

package.json使用说明(npm script)

这篇文章需要更新啦:需要区分 package.json 和 package-lock.json 及更新机制。

https://github.com/SamHwang1990/blog/issues/7
https://stackoverflow.com/questions/44297803/what-is-the-role-of-the-package-lock-json
https://stackoverflow.com/questions/45022048/why-does-npm-install-rewrite-package-lock-json
https://docs.npmjs.com/about-semantic-versioning
https://www.zhihu.com/question/62331583

概述

package.jsonnpm本地安装包管理文件,主要作用如下:

  • 充当项目所依赖的安装包的文档说明;
  • 可以指定安装包的版本;
  • 执行npm install命令,可以安装package.json中指定的安装包。这意味着项目移植更加便捷。

使用

必须内容

一个package.json文件,至少包括nameversion两项内容:

{
"name": "my-awesome-package",
"version": "1.0.0"
}

自动创建

使用npm init命令可以自动创建package.json文件,在命令行中采用问答的形式填充内容,除了nameversion是必填的,其他内容可以为空。

当然,也可以直接使用npm init --yes或者npm init --y命令直接生成package.json,直接生成的文件内容如下:

{
"name": "my_package",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "https://github.com/ashleygwilliams/my_package.git"
},
"keywords": [],
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/ashleygwilliams/my_package/issues"
},
"homepage": "https://github.com/ashleygwilliams/my_package"
}

说明如下:

  • name: the current directory name
  • version: always 1.0.0
  • description: info from the readme, else an empty string “”
  • main: always index.js
  • scripts: by default creates a empty test script
  • keywords: empty
  • author: empty
  • license: ISC
  • bugs: info from the current directory, if present
  • homepage: info from the current directory, if present

scripts里面添加的内容就是传说中的npm script内容了,除了简化命令操作,还可以在本地执行Gulp、Babel等命令(如果知识本地安装而非全局安装,必须使用npm script的形式调用Gulp/Babel命令)

指定依赖安装包

依赖安装包分为dependenciesdevDependencies两种类型,其中带dev前缀的表示开发环境依赖库,不带dev前缀的表示生产环境依赖库,在使用npm命令行工具安装依赖包时可以指定添加到哪个库。

添加到dependencies使用下面命令:

npm install <package_name> --save

添加到devDependencies使用下面命令:

npm install <package_name> --save-dev

如果在命令后面家-Dflag,可以直接将插件添加到package.json文件中去,比如npm install <package_name> --save-dev -D<packge_name>添加到"devDependencies": {}中去。

问题:为什么要区分dependenciesdevDependencies

因为在生产环境中的依赖包和开发环境的依赖包可能不一样,区分dependenciesdevDependencies是为了方便包管理。

比如在生产环境中只安装dependencies里面的依赖包,执行下面的命令就可以:

npm install --production

关于在生产环境中如何只安装dependencies里面的依赖包可查看option to not install devDependencies

npm script

很多工具本地安装要比全局安装好,这样可以根据不同项目进行不用设置。本地安装的工具,比如gulp, babel,可以通过npm script进行管理,比如启动Gulp

"scripts": {
"gulp-task": "gulp gulp-task"
},

其他

更多内容可查看 npm 对package.json的官方描述:Specifics of npm’s package.json handling

参考资料

【1】Using a package.json
【2】option to not install devDependencies
【3】Specifics of npm’s package.json handling