@i-santos/create-package-starter 0.1.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -7
- package/lib/run.js +6 -35
- package/package.json +2 -2
- package/template/README.md +5 -11
- package/template/package.json +1 -6
- package/template/scripts/check.js +0 -4
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @i-santos/create-package-starter
|
|
2
2
|
|
|
3
|
-
Scaffold new npm packages with a
|
|
3
|
+
Scaffold new npm packages with a standardized Changesets release workflow.
|
|
4
4
|
|
|
5
5
|
## Install / Run
|
|
6
6
|
|
|
@@ -13,17 +13,11 @@ npx @i-santos/create-package-starter --name @i-santos/swarm
|
|
|
13
13
|
|
|
14
14
|
- `--name <name>` (required, supports `pkg` and `@scope/pkg`)
|
|
15
15
|
- `--out <directory>` (default: current directory)
|
|
16
|
-
- `--release-cli-pkg <package>` (default: `@i-santos/release-cli`)
|
|
17
|
-
- `--release-cli-version <version>` (default: `^0.1.0`)
|
|
18
16
|
|
|
19
17
|
## Output
|
|
20
18
|
|
|
21
19
|
Generated package includes:
|
|
22
20
|
|
|
23
|
-
- `release:beta`
|
|
24
|
-
- `release:stable`
|
|
25
|
-
- `release:publish`
|
|
26
|
-
- `registry:start`
|
|
27
21
|
- `changeset`
|
|
28
22
|
- `version-packages`
|
|
29
23
|
- `release`
|
package/lib/run.js
CHANGED
|
@@ -1,27 +1,21 @@
|
|
|
1
1
|
const fs = require('fs');
|
|
2
2
|
const path = require('path');
|
|
3
3
|
|
|
4
|
-
const DEFAULT_RELEASE_CLI_PKG = '@i-santos/release-cli';
|
|
5
|
-
const DEFAULT_RELEASE_CLI_VERSION = '^0.1.0';
|
|
6
|
-
|
|
7
4
|
function usage() {
|
|
8
5
|
return [
|
|
9
6
|
'Uso:',
|
|
10
|
-
' create-package-starter --name <nome> [--out <diretorio>]
|
|
7
|
+
' create-package-starter --name <nome> [--out <diretorio>]',
|
|
11
8
|
'',
|
|
12
9
|
'Exemplo:',
|
|
13
10
|
' create-package-starter --name hello-package',
|
|
14
11
|
' create-package-starter --name @i-santos/swarm',
|
|
15
|
-
' create-package-starter --name hello-package --out ./packages'
|
|
16
|
-
' create-package-starter --name hello-package --release-cli-pkg @i-santos/release-cli --release-cli-version ^1.0.0'
|
|
12
|
+
' create-package-starter --name hello-package --out ./packages'
|
|
17
13
|
].join('\n');
|
|
18
14
|
}
|
|
19
15
|
|
|
20
16
|
function parseArgs(argv) {
|
|
21
17
|
const args = {
|
|
22
|
-
out: process.cwd()
|
|
23
|
-
releaseCliPkg: DEFAULT_RELEASE_CLI_PKG,
|
|
24
|
-
releaseCliVersion: DEFAULT_RELEASE_CLI_VERSION
|
|
18
|
+
out: process.cwd()
|
|
25
19
|
};
|
|
26
20
|
|
|
27
21
|
for (let i = 0; i < argv.length; i += 1) {
|
|
@@ -39,18 +33,6 @@ function parseArgs(argv) {
|
|
|
39
33
|
continue;
|
|
40
34
|
}
|
|
41
35
|
|
|
42
|
-
if (token === '--release-cli-pkg') {
|
|
43
|
-
args.releaseCliPkg = argv[i + 1];
|
|
44
|
-
i += 1;
|
|
45
|
-
continue;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (token === '--release-cli-version') {
|
|
49
|
-
args.releaseCliVersion = argv[i + 1];
|
|
50
|
-
i += 1;
|
|
51
|
-
continue;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
36
|
if (token === '--help' || token === '-h') {
|
|
55
37
|
args.help = true;
|
|
56
38
|
continue;
|
|
@@ -96,10 +78,7 @@ function copyDirRecursive(sourceDir, targetDir) {
|
|
|
96
78
|
|
|
97
79
|
function renderTemplateFile(filePath, variables) {
|
|
98
80
|
const source = fs.readFileSync(filePath, 'utf8');
|
|
99
|
-
const output = source
|
|
100
|
-
.replace(/__PACKAGE_NAME__/g, variables.packageName)
|
|
101
|
-
.replace(/__RELEASE_CLI_PKG__/g, variables.releaseCliPkg)
|
|
102
|
-
.replace(/__RELEASE_CLI_VERSION__/g, variables.releaseCliVersion);
|
|
81
|
+
const output = source.replace(/__PACKAGE_NAME__/g, variables.packageName);
|
|
103
82
|
|
|
104
83
|
fs.writeFileSync(filePath, output);
|
|
105
84
|
}
|
|
@@ -116,10 +95,6 @@ async function run(argv) {
|
|
|
116
95
|
throw new Error('Erro: informe um nome válido com --name (ex: hello-package ou @i-santos/swarm).');
|
|
117
96
|
}
|
|
118
97
|
|
|
119
|
-
if (!args.releaseCliPkg || !args.releaseCliVersion) {
|
|
120
|
-
throw new Error('Erro: --release-cli-pkg e --release-cli-version devem ser informados corretamente.');
|
|
121
|
-
}
|
|
122
|
-
|
|
123
98
|
const packageRoot = path.resolve(__dirname, '..');
|
|
124
99
|
const templateDir = path.join(packageRoot, 'template');
|
|
125
100
|
|
|
@@ -137,15 +112,11 @@ async function run(argv) {
|
|
|
137
112
|
copyDirRecursive(templateDir, targetDir);
|
|
138
113
|
|
|
139
114
|
renderTemplateFile(path.join(targetDir, 'package.json'), {
|
|
140
|
-
packageName: args.name
|
|
141
|
-
releaseCliPkg: args.releaseCliPkg,
|
|
142
|
-
releaseCliVersion: args.releaseCliVersion
|
|
115
|
+
packageName: args.name
|
|
143
116
|
});
|
|
144
117
|
|
|
145
118
|
renderTemplateFile(path.join(targetDir, 'README.md'), {
|
|
146
|
-
packageName: args.name
|
|
147
|
-
releaseCliPkg: args.releaseCliPkg,
|
|
148
|
-
releaseCliVersion: args.releaseCliVersion
|
|
119
|
+
packageName: args.name
|
|
149
120
|
});
|
|
150
121
|
|
|
151
122
|
console.log(`Pacote criado em ${targetDir}`);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@i-santos/create-package-starter",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Scaffold new npm packages with standardized release
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Scaffold new npm packages with a standardized Changesets release workflow",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Igor Santos",
|
|
7
7
|
"homepage": "https://github.com/i-santos/package-starter#readme",
|
package/template/README.md
CHANGED
|
@@ -5,19 +5,13 @@ Pacote criado pelo `@i-santos/create-package-starter`.
|
|
|
5
5
|
## Comandos
|
|
6
6
|
|
|
7
7
|
- `npm run check`
|
|
8
|
-
- `npm run registry:start`
|
|
9
|
-
- `npm run release:beta`
|
|
10
|
-
- `npm run release:stable`
|
|
11
|
-
- `npm run release:publish`
|
|
12
8
|
- `npm run changeset`
|
|
13
9
|
- `npm run version-packages`
|
|
14
10
|
- `npm run release`
|
|
15
11
|
|
|
16
|
-
##
|
|
12
|
+
## Fluxo de release
|
|
17
13
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
- Workflow pronto em `.github/workflows/release.yml`.
|
|
23
|
-
- Configuração de changesets em `.changeset/config.json`.
|
|
14
|
+
1. Crie um changeset na PR: `npm run changeset`.
|
|
15
|
+
2. Faça merge na `main`.
|
|
16
|
+
3. O workflow `.github/workflows/release.yml` cria/atualiza a PR de release.
|
|
17
|
+
4. Ao merge da PR de release, o publish é executado no npm.
|
package/template/package.json
CHANGED
|
@@ -4,16 +4,11 @@
|
|
|
4
4
|
"description": "Pacote gerado pelo create-package-starter",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"check": "node scripts/check.js",
|
|
7
|
-
"release:beta": "release-cli beta",
|
|
8
|
-
"release:stable": "release-cli stable",
|
|
9
|
-
"release:publish": "release-cli publish",
|
|
10
|
-
"registry:start": "release-cli registry http://127.0.0.1:4873",
|
|
11
7
|
"changeset": "changeset",
|
|
12
8
|
"version-packages": "changeset version",
|
|
13
|
-
"release": "npm run check &&
|
|
9
|
+
"release": "npm run check && changeset publish"
|
|
14
10
|
},
|
|
15
11
|
"devDependencies": {
|
|
16
|
-
"__RELEASE_CLI_PKG__": "__RELEASE_CLI_VERSION__",
|
|
17
12
|
"@changesets/cli": "^2.29.7"
|
|
18
13
|
}
|
|
19
14
|
}
|
|
@@ -7,10 +7,6 @@ const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
|
7
7
|
const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
8
8
|
|
|
9
9
|
const requiredScripts = [
|
|
10
|
-
'release:beta',
|
|
11
|
-
'release:stable',
|
|
12
|
-
'release:publish',
|
|
13
|
-
'registry:start',
|
|
14
10
|
'changeset',
|
|
15
11
|
'version-packages',
|
|
16
12
|
'release'
|