全部学科
Python全栈
python
NodeJS全栈
nodejs
📅 2026-05-25 5 分钟 ✍️ juanwangdev

scripts脚本与元数据配置

scripts字段是项目自动化任务的核心,元数据字段则描述项目的基本信息。

scripts脚本配置

定义脚本

JSON
{
  "scripts": {
    "dev": "node server.js",
    "build": "webpack --mode production",
    "lint": "eslint src/"
  }
}

执行脚本

Bash
# 自定义脚本需加run
npm run dev
npm run build

# 以下内置脚本可省略run
npm start
npm test
npm stop
npm restart

脚本间的钩子

NPM提供pre和post钩子,按顺序自动执行:

JSON
{
  "scripts": {
    "prebuild": "npm run lint",
    "build": "webpack --mode production",
    "postbuild": "echo 'build done'"
  }
}

执行npm run build时依次运行:prebuild → build → postbuild。

钩子脚本没有输出提示,容易忽略其执行。调试时注意观察pre/post脚本是否正常。

其他元数据字段

description与keywords

JSON
{
  "description": "一个轻量级HTTP工具库",
  "keywords": ["http", "request", "tool"]
}

用于npm搜索时的匹配和展示。

main字段

指定包的入口文件:

JSON
{
  "main": "lib/index.js"
}

当其他项目require('my-package')时,加载的就是main指向的文件。

license字段

声明开源协议:

JSON
{
  "license": "MIT"
}

常用协议:MIT(最宽松)、Apache-2.0、GPL-3.0。

repository与author

JSON
{
  "author": "小智 <dev@example.com>",
  "repository": {
    "type": "git",
    "url": "https://github.com/user/repo.git"
  }
}

未设置license时NPM默认视为专有软件,可能影响他人使用。开源项目务必明确声明协议。

要点总结

  • scripts中自定义脚本用npm run <name>执行,start/test/stop/restart可省略run
  • pre/post钩子可自动串联执行,但需注意其副作用
  • main指定包入口文件,description和keywords影响npm搜索展示
  • license务必显式声明,MIT是最常用的宽松协议
想在手机上练习这篇文章的配套题目?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一篇 package.json初始化与核心字段
下一篇 → npm依赖安装与卸载
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码