feat(install): add loaded linker with GVS exclusions (#16482)
Add an opt-in CAS installer and synchronous Node.js module loader. Generate package-instance manifests and embed the runtime in the Rust CLI. Load compatible package files directly from verified store blobs while retaining ordinary complete GVS installations for explicitly materialized dependency trees. Reuse the existing fetch, graph hashing, linking, build approval, and command shim pipelines. Preserve loader references during store pruning and preload the loader for normal script and command execution. Keep application filesystem APIs intact. Document the install mode; keep compatibility experiment results in the implementation task. Related to https://github.com/pnpm/tasks/issues/64. Future linker-specific settings and nested hoisting configuration are tracked separately in https://github.com/pnpm/tasks/issues/72. Only the loaded-linker object form is included here.
This commit is contained in:
1 parent
20e77aa3a2
commit
8aec5067cc
129 files changed
+4059
-203
No files matched your search
@@ -8,7 +8,7 @@ import { prepareDocsSync } from './prepare-docs-sync.mjs'
|
||||
|
||||
function fixture (t, tag = 'v12.8.2') {
|
||||
const repo = mkdtempSync(path.join(os.tmpdir(), 'pnpm-docs-release-'))
|
||||
t.after(() => rmSync(repo, { recursive: true, force: true }))
|
||||
t.after(() => rmSync(repo, { recursive: true, force: true, maxRetries: 3 }))
|
||||
const git = (...args) => execFileSync('git', args, { cwd: repo, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] }).trim()
|
||||
const version = tag.startsWith('pnpr@') ? tag.slice(5) : tag.slice(1)
|
||||
for (const [product, current] of [['pnpm/npm/pnpm', '12.8.2'], ['pnpm11/pnpm', '11.28.2'], ['pnpr/npm/pnpr', '0.1.0-alpha.14']]) {
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
#!/usr/bin/env node
|
||||
import { spawn, spawnSync } from 'node:child_process'
|
||||
import console from 'node:console'
|
||||
import { readFileSync } from 'node:fs'
|
||||
import { mkdir, readdir, stat, writeFile } from 'node:fs/promises'
|
||||
import path from 'node:path'
|
||||
import { performance } from 'node:perf_hooks'
|
||||
import process from 'node:process'
|
||||
|
||||
import { readTestDurations, selectChunk, taskWeight } from './ts-test-chunks.mjs'
|
||||
|
||||
@@ -179,6 +181,9 @@ async function runScriptTask (pkg) {
|
||||
await runCommand('node', ['--test', 'test/test.js', 'test/e2e.test.js'], { cwd: pkg.path })
|
||||
} else if (pkg.manifest.name === '@pnpm/eslint-config') {
|
||||
await runCommand('node', ['--test', 'test/perfectionist.test.js'], { cwd: pkg.path })
|
||||
} else if (pkg.manifest.name === '@pnpm/esm-loader') {
|
||||
await runCommand('node', ['--test', 'test/loader.test.mjs', 'scripts/test-unrs-resolver.mjs'], { cwd: pkg.path })
|
||||
await runCommand('node', ['scripts/bundle-runtime.mjs', '--check'], { cwd: pkg.path })
|
||||
} else {
|
||||
throw new Error(`Unsupported non-Jest .test script in ${relDir}: ${pkg.manifest.scripts['.test']}`)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user