@pnpm/exportable-manifest
Advanced tools
Comparing version 6.0.2 to 6.1.0
@@ -26,4 +26,4 @@ "use strict"; | ||
} | ||
await Promise.all(['dependencies', 'devDependencies', 'optionalDependencies', 'peerDependencies'].map(async (depsField) => { | ||
const deps = await makePublishDependencies(dir, originalManifest[depsField], opts?.modulesDir); | ||
await Promise.all(['dependencies', 'devDependencies', 'optionalDependencies'].map(async (depsField) => { | ||
const deps = await makePublishDependencies(dir, originalManifest[depsField], { modulesDir: opts?.modulesDir }); | ||
if (deps != null) { | ||
@@ -33,2 +33,6 @@ publishManifest[depsField] = deps; | ||
})); | ||
const peerDependencies = originalManifest.peerDependencies; | ||
if (peerDependencies) { | ||
publishManifest.peerDependencies = await makePublishDependencies(dir, peerDependencies, { modulesDir: opts?.modulesDir, convertDependencyForPublish: makePublishPeerDependency }); | ||
} | ||
(0, overridePublishConfig_1.overridePublishConfig)(publishManifest); | ||
@@ -41,8 +45,16 @@ if (opts?.readmeFile) { | ||
exports.createExportableManifest = createExportableManifest; | ||
async function makePublishDependencies(dir, dependencies, modulesDir) { | ||
async function makePublishDependencies(dir, dependencies, { modulesDir, convertDependencyForPublish = makePublishDependency } = {}) { | ||
if (dependencies == null) | ||
return dependencies; | ||
const publishDependencies = await (0, p_map_values_1.default)((depSpec, depName) => makePublishDependency(depName, depSpec, dir, modulesDir), dependencies); | ||
const publishDependencies = await (0, p_map_values_1.default)((depSpec, depName) => convertDependencyForPublish(depName, depSpec, dir, modulesDir), dependencies); | ||
return publishDependencies; | ||
} | ||
async function resolveManifest(depName, modulesDir) { | ||
const { manifest } = await (0, read_project_manifest_1.tryReadProjectManifest)(path_1.default.join(modulesDir, depName)); | ||
if (!manifest?.name || !manifest?.version) { | ||
throw new error_1.PnpmError('CANNOT_RESOLVE_WORKSPACE_PROTOCOL', `Cannot resolve workspace protocol of dependency "${depName}" ` + | ||
'because this dependency is not installed. Try running "pnpm install".'); | ||
} | ||
return manifest; | ||
} | ||
async function makePublishDependency(depName, depSpec, dir, modulesDir) { | ||
@@ -56,7 +68,3 @@ if (!depSpec.startsWith('workspace:')) { | ||
modulesDir = modulesDir ?? path_1.default.join(dir, 'node_modules'); | ||
const { manifest } = await (0, read_project_manifest_1.tryReadProjectManifest)(path_1.default.join(modulesDir, depName)); | ||
if (!manifest?.version) { | ||
throw new error_1.PnpmError('CANNOT_RESOLVE_WORKSPACE_PROTOCOL', `Cannot resolve workspace protocol of dependency "${depName}" ` + | ||
'because this dependency is not installed. Try running "pnpm install".'); | ||
} | ||
const manifest = await resolveManifest(depName, modulesDir); | ||
const semverRangeToken = versionAliasSpecParts[2] !== '*' ? versionAliasSpecParts[2] : ''; | ||
@@ -69,7 +77,3 @@ if (depName !== manifest.name) { | ||
if (depSpec.startsWith('workspace:./') || depSpec.startsWith('workspace:../')) { | ||
const { manifest } = await (0, read_project_manifest_1.tryReadProjectManifest)(path_1.default.join(dir, depSpec.slice(10))); | ||
if (!manifest?.name || !manifest?.version) { | ||
throw new error_1.PnpmError('CANNOT_RESOLVE_WORKSPACE_PROTOCOL', `Cannot resolve workspace protocol of dependency "${depName}" ` + | ||
'because this dependency is not installed. Try running "pnpm install".'); | ||
} | ||
const manifest = await resolveManifest(depName, path_1.default.join(dir, depSpec.slice(10))); | ||
if (manifest.name === depName) | ||
@@ -85,2 +89,19 @@ return `${manifest.version}`; | ||
} | ||
async function makePublishPeerDependency(depName, depSpec, dir, modulesDir) { | ||
if (!depSpec.includes('workspace:')) { | ||
return depSpec; | ||
} | ||
// Dependencies with bare "*", "^", "~",">=",">","<=",< versions | ||
const workspaceSemverRegex = /workspace:([\^~*]|>=|>|<=|<)/; | ||
const versionAliasSpecParts = workspaceSemverRegex.exec(depSpec); | ||
if (versionAliasSpecParts != null) { | ||
modulesDir = modulesDir ?? path_1.default.join(dir, 'node_modules'); | ||
const manifest = await resolveManifest(depName, modulesDir); | ||
const [, semverRangGroup] = versionAliasSpecParts; | ||
const semverRangeToken = semverRangGroup !== '*' ? semverRangGroup : ''; | ||
return depSpec.replace(workspaceSemverRegex, `${semverRangeToken}${manifest.version}`); | ||
} | ||
depSpec = depSpec.replace('workspace:', ''); | ||
return depSpec; | ||
} | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@pnpm/exportable-manifest", | ||
"version": "6.0.2", | ||
"version": "6.1.0", | ||
"description": "Creates an exportable manifest", | ||
@@ -29,4 +29,4 @@ "main": "lib/index.js", | ||
"write-yaml-file": "^5.0.0", | ||
"@pnpm/prepare": "0.0.92", | ||
"@pnpm/exportable-manifest": "6.0.2" | ||
"@pnpm/prepare": "0.0.95", | ||
"@pnpm/exportable-manifest": "6.1.0" | ||
}, | ||
@@ -36,5 +36,5 @@ "dependencies": { | ||
"ramda": "npm:@pnpm/ramda@0.28.1", | ||
"@pnpm/read-project-manifest": "6.0.2", | ||
"@pnpm/error": "6.0.1", | ||
"@pnpm/types": "10.1.0" | ||
"@pnpm/read-project-manifest": "6.0.3", | ||
"@pnpm/types": "10.1.1" | ||
}, | ||
@@ -41,0 +41,0 @@ "funding": "https://opencollective.com/pnpm", |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
14618
154
+ Added@pnpm/read-project-manifest@6.0.3(transitive)
+ Added@pnpm/types@10.1.1(transitive)
+ Added@pnpm/write-project-manifest@6.0.2(transitive)
- Removed@pnpm/read-project-manifest@6.0.2(transitive)
- Removed@pnpm/types@10.1.0(transitive)
- Removed@pnpm/write-project-manifest@6.0.1(transitive)
Updated@pnpm/types@10.1.1