NPM 发布-检测产物脚本
# 0. 前言
NPM
包在发包,通过指定 package.json
文件的 files
属性字段,来控制实际发布的产物。在发布之前,可以通过一个脚本保证构建产物存在。
# 1. 脚本逻辑
#!/usr/bin/env node
const fs = require("fs");
const { join } = require("path");
const workingDir = process.cwd();
const pkg = JSON.parse(
fs.readFileSync(join(workingDir, "package.json"), "utf-8"),
);
// 非私有包
if (pkg.private) return;
const { files } = pkg;
files.forEach(file => {
const fileDir = join(workingDir, file);
// 根据 files 字段遍历,是否存在此文件,如果不存则抛出错误。
if (!fs.existsSync(fileDir)) {
throw new Error(`${fileDir} does not exist, plz run build`);
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 2. NPM 脚本控制
// package.json
{
"name": "npm 包名",
"version": "符合 semver 版本",
"description": "描述",
"repository": "git 仓库地址",
"license": "MIT",
"main": "入口文件",
"scripts": {
// 当 watchdog 通过后,通过 npm publish 推送 npm 包至制品库
"pub": "node ./scripts/watchdog.js && npm pub"
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 3.代码来源
- 阿里
LowCode Engine
示例代码。
编辑 (opens new window)
上次更新: 2023/03/18, 13:03:00