@yaonyan/jsr2npm 0.1.8 → 0.1.9
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/bin/jsr2npm.mjs +28 -15
- package/package.json +1 -1
package/bin/jsr2npm.mjs
CHANGED
|
@@ -21,6 +21,7 @@ import $ from "dax-sh";
|
|
|
21
21
|
import { chmod, mkdir as mkdir2, readFile as readFile3, rename, rm, stat as stat3, writeFile as writeFile2 } from "node:fs/promises";
|
|
22
22
|
import { join as join3 } from "node:path";
|
|
23
23
|
import { mkdirSync } from "node:fs";
|
|
24
|
+
import process3 from "node:process";
|
|
24
25
|
|
|
25
26
|
// __yao__jsr2npm_latest/node_modules/@yao/jsr2npm/bundler.js
|
|
26
27
|
import { copyFile, mkdir, readdir, stat } from "node:fs/promises";
|
|
@@ -301,15 +302,15 @@ async function convertPackage(packageName, version, bin, overrides, browser) {
|
|
|
301
302
|
console.log(`\u{1F310} Browser mode: enabled`);
|
|
302
303
|
}
|
|
303
304
|
const workspaceDir = createWorkspace(packageName, version);
|
|
304
|
-
const originalCwd =
|
|
305
|
+
const originalCwd = process3.cwd();
|
|
305
306
|
try {
|
|
306
|
-
|
|
307
|
+
process3.chdir(workspaceDir);
|
|
307
308
|
await installJSRPackage(packageName, version);
|
|
308
309
|
const packageDir = join3("node_modules", packageName);
|
|
309
310
|
await mkdir2(join3(packageDir, "dist"), {
|
|
310
311
|
recursive: true
|
|
311
312
|
});
|
|
312
|
-
const { externals, allDependencies } = await getExternalPackages(packageDir);
|
|
313
|
+
const { externals, allDependencies } = await getExternalPackages(packageDir, overrides);
|
|
313
314
|
await bundlePackage(packageDir, bin, externals, browser);
|
|
314
315
|
await copyTypeDeclarations(packageDir);
|
|
315
316
|
await copyExtraFiles(packageDir, `${packageDir}/dist`);
|
|
@@ -318,7 +319,7 @@ async function convertPackage(packageName, version, bin, overrides, browser) {
|
|
|
318
319
|
console.log("\n\u2705 Conversion completed!");
|
|
319
320
|
console.log(`\u{1F4C2} Output: ${workspaceDir}/dist`);
|
|
320
321
|
} finally {
|
|
321
|
-
|
|
322
|
+
process3.chdir(originalCwd);
|
|
322
323
|
}
|
|
323
324
|
}
|
|
324
325
|
function createWorkspace(packageName, version) {
|
|
@@ -329,26 +330,38 @@ function createWorkspace(packageName, version) {
|
|
|
329
330
|
console.log(`\u{1F4C1} Created folder: ${folderName}`);
|
|
330
331
|
return folderName;
|
|
331
332
|
}
|
|
332
|
-
async function getExternalPackages(packageDir) {
|
|
333
|
+
async function getExternalPackages(packageDir, overrides) {
|
|
333
334
|
try {
|
|
334
335
|
const content = await readFile3(join3(packageDir, "package.json"), "utf-8");
|
|
335
336
|
const pkgJson = JSON.parse(content);
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
337
|
+
const userDependencies = overrides?.dependencies || {};
|
|
338
|
+
if (!pkgJson.dependencies && Object.keys(userDependencies).length === 0) {
|
|
339
|
+
return {
|
|
340
|
+
externals: [],
|
|
341
|
+
allDependencies: {}
|
|
342
|
+
};
|
|
343
|
+
}
|
|
340
344
|
const topLevelDeps = {};
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
345
|
+
if (pkgJson.dependencies) {
|
|
346
|
+
for (const [name, version] of Object.entries(pkgJson.dependencies)) {
|
|
347
|
+
if (!name.startsWith("@jsr/")) {
|
|
348
|
+
topLevelDeps[name] = String(version);
|
|
349
|
+
}
|
|
344
350
|
}
|
|
345
351
|
}
|
|
346
|
-
const
|
|
352
|
+
for (const [name, version] of Object.entries(userDependencies)) {
|
|
353
|
+
topLevelDeps[name] = version;
|
|
354
|
+
}
|
|
355
|
+
const jsrPackages = pkgJson.dependencies ? Object.keys(pkgJson.dependencies).filter((name) => name.startsWith("@jsr/")) : [];
|
|
347
356
|
const conflictingPackages = await findConflictingPackages(packageDir, jsrPackages, topLevelDeps);
|
|
348
357
|
const externals = Object.keys(topLevelDeps).filter((name) => !conflictingPackages.has(name));
|
|
349
358
|
const externalList = externals.join(", ") || "none";
|
|
350
359
|
console.log(`
|
|
351
360
|
\u{1F4E6} External dependencies (${externals.length}): ${externalList}`);
|
|
361
|
+
if (Object.keys(userDependencies).length > 0) {
|
|
362
|
+
const userDepsList = Object.keys(userDependencies).join(", ");
|
|
363
|
+
console.log(`\u{1F4DD} User-configured dependencies: ${userDepsList}`);
|
|
364
|
+
}
|
|
352
365
|
if (conflictingPackages.size > 0) {
|
|
353
366
|
const conflictList = Array.from(conflictingPackages).join(", ");
|
|
354
367
|
console.log(`\u26A0\uFE0F Version conflicts, will bundle: ${conflictList}`);
|
|
@@ -427,7 +440,7 @@ async function installJSRPackage(packageName, version) {
|
|
|
427
440
|
await writeFile2("package.json", "{}");
|
|
428
441
|
const packageSpec = version === "latest" ? packageName : `${packageName}@${version}`;
|
|
429
442
|
console.log(`\u{1F504} Installing: ${packageSpec}`);
|
|
430
|
-
await $`npx jsr add ${packageSpec}`.cwd(
|
|
443
|
+
await $`npx jsr add ${packageSpec}`.cwd(process3.cwd());
|
|
431
444
|
}
|
|
432
445
|
async function verifyEntrypoint(packageDir, entrypoint) {
|
|
433
446
|
try {
|
|
@@ -462,7 +475,7 @@ async function readDenoJsonExports(packageDir) {
|
|
|
462
475
|
}
|
|
463
476
|
async function moveDistToRoot(packageDir) {
|
|
464
477
|
const sourceDist = join3(packageDir, "dist");
|
|
465
|
-
const targetDist = join3(
|
|
478
|
+
const targetDist = join3(process3.cwd(), "dist");
|
|
466
479
|
try {
|
|
467
480
|
await rm(targetDist, {
|
|
468
481
|
recursive: true
|