@alcalzone/monopack 1.1.0 → 1.2.1
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 +3 -1
- package/build/cli.js +51 -53
- package/build/cli.js.map +1 -1
- package/package.json +8 -4
package/README.md
CHANGED
|
@@ -8,9 +8,11 @@ This works by editing the `package.json` files in the resulting tarballs so that
|
|
|
8
8
|
Run this inside the root of your monorepo:
|
|
9
9
|
|
|
10
10
|
```sh
|
|
11
|
-
npx @alcalzone/monopack [--target <target-dir>] [--no-version]
|
|
11
|
+
npx @alcalzone/monopack [--target <target-dir>] [--no-version] [--absolute]
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
To specify a target directory, use the `--target` flag. By default, the tarballs will be created in the `.monopack` directory.
|
|
15
15
|
|
|
16
16
|
By default, the package version will be included in the tarball name. To disable this, use the `--no-version` flag.
|
|
17
|
+
|
|
18
|
+
To reference the dependency tarballs using absolute paths (`file:/path/to/dependency.tgz`) instead of relative paths (`file:../dependency.tgz`), use the `--absolute` flag. This may be necessary for some `yarn` versions that don't resolve the referenced tarballs correctly. Note that the tarballs CANNOT be moved when doing this.
|
package/build/cli.js
CHANGED
|
@@ -6,17 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
// Script to pack the monorepo packages for production, but locally
|
|
7
7
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const
|
|
10
|
-
const zlib_1 = __importDefault(require("zlib"));
|
|
9
|
+
const tar_1 = __importDefault(require("tar"));
|
|
11
10
|
const pak_1 = require("@alcalzone/pak");
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const _buf = Array();
|
|
15
|
-
stream.on("data", (chunk) => _buf.push(chunk));
|
|
16
|
-
stream.on("end", () => resolve(Buffer.concat(_buf)));
|
|
17
|
-
stream.on("error", (err) => reject(`error converting stream - ${err}`));
|
|
18
|
-
});
|
|
19
|
-
}
|
|
11
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
12
|
+
let tmpDir;
|
|
20
13
|
async function main() {
|
|
21
14
|
const workspaces = [];
|
|
22
15
|
const targetArgsIndex = process.argv.indexOf("--target");
|
|
@@ -25,7 +18,9 @@ async function main() {
|
|
|
25
18
|
if (!path_1.default.isAbsolute(outDir)) {
|
|
26
19
|
outDir = path_1.default.join(process.cwd(), outDir);
|
|
27
20
|
}
|
|
21
|
+
tmpDir = path_1.default.join(outDir, `tmp-${crypto_1.default.randomBytes(4).toString("hex")}`);
|
|
28
22
|
const noVersion = process.argv.includes("--no-version");
|
|
23
|
+
const absolute = process.argv.includes("--absolute");
|
|
29
24
|
// First pass: read all package.json files
|
|
30
25
|
console.log("Parsing workspace...");
|
|
31
26
|
const pak = await (0, pak_1.detectPackageManager)();
|
|
@@ -77,54 +72,57 @@ async function main() {
|
|
|
77
72
|
console.log("Modifying workspaces...");
|
|
78
73
|
for (const workspace of workspaces) {
|
|
79
74
|
console.log(` ${workspace.name}`);
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
extract
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const packageJson = JSON.parse(data.toString());
|
|
86
|
-
// Replace workspace dependencies with references to local tarballs
|
|
87
|
-
for (const dep of workspace.workspaceDependencies) {
|
|
88
|
-
const depWorkspace = workspaces.find((w) => w.name === dep);
|
|
89
|
-
if (!depWorkspace) {
|
|
90
|
-
console.error(`Did not find workspace ${dep}, required by ${workspace.name}`);
|
|
91
|
-
process.exit(1);
|
|
92
|
-
}
|
|
93
|
-
const targetFileName = noVersion
|
|
94
|
-
? depWorkspace.tarball.replace(`-${depWorkspace.version}.tgz`, ".tgz")
|
|
95
|
-
: depWorkspace.tarball;
|
|
96
|
-
packageJson.dependencies[dep] = `file:./${path_1.default.basename(targetFileName)}`;
|
|
97
|
-
}
|
|
98
|
-
// Avoid accidentally installing dev dependencies
|
|
99
|
-
delete packageJson.devDependencies;
|
|
100
|
-
// Return data
|
|
101
|
-
pack.entry(header, JSON.stringify(packageJson, null, 2), next);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
// pass through
|
|
105
|
-
stream.pipe(pack.entry(header, next));
|
|
106
|
-
}
|
|
75
|
+
// extract the tarball
|
|
76
|
+
await fs_extra_1.default.emptyDir(tmpDir);
|
|
77
|
+
await tar_1.default.extract({
|
|
78
|
+
file: workspace.tarball,
|
|
79
|
+
cwd: tmpDir,
|
|
107
80
|
});
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
81
|
+
// modify package.json
|
|
82
|
+
const packageJsonPath = path_1.default.join(tmpDir, "package/package.json");
|
|
83
|
+
const packageJson = await fs_extra_1.default.readJSON(packageJsonPath);
|
|
84
|
+
// Replace workspace dependencies with references to local tarballs
|
|
85
|
+
for (const dep of workspace.workspaceDependencies) {
|
|
86
|
+
const depWorkspace = workspaces.find((w) => w.name === dep);
|
|
87
|
+
if (!depWorkspace) {
|
|
88
|
+
console.error(`Did not find workspace ${dep}, required by ${workspace.name}`);
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
const targetFileName = noVersion
|
|
92
|
+
? depWorkspace.tarball.replace(`-${depWorkspace.version}.tgz`, ".tgz")
|
|
93
|
+
: depWorkspace.tarball;
|
|
94
|
+
packageJson.dependencies[dep] = absolute
|
|
95
|
+
? `file:${targetFileName}`
|
|
96
|
+
: `file:./${path_1.default.basename(targetFileName)}`;
|
|
97
|
+
}
|
|
98
|
+
// Avoid accidentally installing dev dependencies
|
|
99
|
+
delete packageJson.devDependencies;
|
|
100
|
+
// write package.json back to disk
|
|
101
|
+
await fs_extra_1.default.writeJSON(packageJsonPath, packageJson, { spaces: 2 });
|
|
102
|
+
// Repack the tarball
|
|
103
|
+
await tar_1.default.create({
|
|
104
|
+
file: workspace.tarball,
|
|
105
|
+
cwd: tmpDir,
|
|
106
|
+
gzip: { level: 9 },
|
|
107
|
+
}, ["package"]);
|
|
108
|
+
// Clean up
|
|
109
|
+
await fs_extra_1.default.remove(tmpDir);
|
|
110
|
+
// Rename the original tarball if necessary
|
|
111
|
+
if (noVersion) {
|
|
112
|
+
await fs_extra_1.default.rename(workspace.tarball, workspace.tarball.replace(`-${workspace.version}.tgz`, ".tgz"));
|
|
113
|
+
}
|
|
124
114
|
}
|
|
125
115
|
console.log("Done!");
|
|
126
116
|
}
|
|
127
117
|
main().catch((err) => {
|
|
118
|
+
if (tmpDir) {
|
|
119
|
+
try {
|
|
120
|
+
fs_extra_1.default.removeSync(tmpDir);
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
// ignore
|
|
124
|
+
}
|
|
125
|
+
}
|
|
128
126
|
console.error(err);
|
|
129
127
|
process.exit(1);
|
|
130
128
|
});
|
package/build/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;AAAA,mEAAmE;AACnE,wDAA0B;AAC1B,gDAAwB;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alcalzone/monopack",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "Like `npm pack` or `yarn pack`, but for entire monorepos.",
|
|
5
5
|
"main": "build/cli.js",
|
|
6
6
|
"types": "build/cli.d.ts",
|
|
@@ -12,6 +12,9 @@
|
|
|
12
12
|
"publishConfig": {
|
|
13
13
|
"access": "public"
|
|
14
14
|
},
|
|
15
|
+
"engines": {
|
|
16
|
+
"node": ">=14"
|
|
17
|
+
},
|
|
15
18
|
"repository": "https://github.com/AlCalzone/monopack.git",
|
|
16
19
|
"author": "Dominic Griesel <d.griesel@gmx.net>",
|
|
17
20
|
"license": "MIT",
|
|
@@ -26,9 +29,10 @@
|
|
|
26
29
|
},
|
|
27
30
|
"devDependencies": {
|
|
28
31
|
"@alcalzone/release-script": "^3.5.9",
|
|
32
|
+
"@tsconfig/node14": "^1.0.3",
|
|
29
33
|
"@types/fs-extra": "^9.0.13",
|
|
30
|
-
"@types/node": "^14.18.
|
|
31
|
-
"@types/tar
|
|
34
|
+
"@types/node": "^14.18.36",
|
|
35
|
+
"@types/tar": "^6.1.3",
|
|
32
36
|
"@typescript-eslint/eslint-plugin": "^5.38.0",
|
|
33
37
|
"@typescript-eslint/parser": "^5.38.0",
|
|
34
38
|
"eslint": "^8.23.1",
|
|
@@ -43,7 +47,7 @@
|
|
|
43
47
|
"dependencies": {
|
|
44
48
|
"@alcalzone/pak": "^0.9.0",
|
|
45
49
|
"fs-extra": "^10.1.0",
|
|
46
|
-
"tar
|
|
50
|
+
"tar": "^6.1.13"
|
|
47
51
|
},
|
|
48
52
|
"packageManager": "yarn@3.2.3"
|
|
49
53
|
}
|