CodeSampleX

Пример

lightningcss 1.33.0

Проверенный пример — npm lightningcss 1.33.0. Контракт выполнен на node 22 · linux alpine/x64 · docker и пройден: bundleAsync resolves and inlines relative…

sha256:28935bd061c60462605f3baeb6118fb8e20d22723a2183f82702a0a83925093e

Эта сеть предлагает одно: образец, который собирается. Она запустила его в песочнице и сохранила подписанную квитанцию. Она ничего не оценивает и ничего не гарантирует — собирается ли тот же код у вас, она не измеряла. Сколько различных ключей подписи подали пройденную квитанцию контракта. Один — только автор; больше одного — значит, кто-то ещё тоже собрал. Ключ создаётся сам и не имеет зарегистрированной личности, поэтому считаются ключи, а не люди. MIT-0

Свидетельства выполнения

Заявленное окружение и подписанные запуски разделены, чтобы вы точно видели, что этот образец запускал и где.

Основа свидетельства
Подписанный контракт пройден
Квитанции проверки
1
Ключи подписи, собравшие его
1
Заявленная среда node 22.23 linux 24 · ubuntu · glibc 2.39 x64 node 22.23 javascript npm 10

Среды запусков проверки

Окружение Контракт Этапы Запуск
node 22 · linux alpine/x64 · docker ed25519:c1973797be207ac4 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · node-typescript@1node:22-alpine@sha256:c610fcdfb1d5…
2026-08-27

Кейс

HOW
Цель
verify pkg:npm/lightningcss@1.33.0
Пакеты
Окружение
node 22.23.2
Создан
2026-08-27T22:07:03Z

Контракт

  1. bundleAsync resolves and inlines relative imports while preserving external import rules with custom in-memory resolver
  2. composeVisitors chains AST transformations for length units and color tokens during minification
  3. bundle bundles multi-file stylesheets from the filesystem with inlined imports and minification

Файлы

  • PROMPT.md
  • csx.json
  • fixtures/main.css
  • fixtures/theme.css
  • package-lock.json
  • package.json
  • spec.json
  • src/index.mjs
  • test/contract.mjs

Скачать артефакт с исходным кодом (tar.gz)

Исходный код

PROMPT.md
Clean-room public code sample — generation instructions

Write a brand-new, minimal, self-contained code sample in this clean-room directory.
Do not copy, paraphrase, or reference any existing project source. Work only from this spec.

A csx.json manifest scaffold already exists. Do not recreate it from memory. Preserve its case.goal, packages and symbols; fill its empty case.contract with exact assertions and correct its environment, commands and verifierAdapter for the files you generate.

Goal: verify pkg:npm/lightningcss@1.33.0
Kind: HOW

Use EXACTLY these public packages and versions:
  - pkg:npm/lightningcss@1.33.0
Constraints:
  - executionContext: node
Required runtime conditions:
  - ecosystem: npm
  - language: javascript
  - moduleSystem: cjs
  - packageManager: npm@10.9.8
  - runtime: node@22.23.2

Rules:
  - One focused purpose; the smallest project that proves the goal.
  - Include a contract test (test/contract.*) that runs OFFLINE and exits 0 exactly when the goal behavior works.
  - Pin every dependency with a lockfile so resolution is reproducible.
  - No secrets, credentials, or tokens. No real URLs (only example.com or localhost). No absolute paths.
  - No personal names, emails, company names, or project identifiers of any kind.
  - No binaries and no generated output (node_modules, dist, target, venv, .git, .env).
  - Keep it under 200 files and 256KB packed.
csx.json
{"case":{"caseId":"case:sha256:595adbb13de3565a6db3d7f34e13605438e4b5ddec596e45f31ad3952893a08e","constraints":{"executionContext":"node"},"contract":["bundleAsync resolves and inlines relative imports while preserving external import rules with custom in-memory resolver","composeVisitors chains AST transformations for length units and color tokens during minification","bundle bundles multi-file stylesheets from the filesystem with inlined imports and minification"],"goal":"verify pkg:npm/lightningcss@1.33.0","kind":"HOW","packages":["pkg:npm/lightningcss@1.33.0"],"schemaVersion":1},"contractCommand":["node","test/contract.mjs"],"environment":{"arch":"x64","distro":"ubuntu","ecosystem":"npm","executionContext":"node","language":"javascript","libc":"glibc","libcVersion":"2.39","moduleSystem":"esm","os":"linux","osVersionBucket":"24","packageManager":"npm","packageManagerVersion":"10.9.8","runtime":"node","runtimeVersion":"22.23.2","schemaVersion":1},"license":"MIT-0","packages":["pkg:npm/lightningcss@1.33.0"],"schemaVersion":1,"subject":"pkg:npm/lightningcss@1.33.0","verifierAdapter":"node-typescript@1"}
fixtures/main.css
@import "./theme.css";

.container {
  max-width: 1200px;
}
fixtures/theme.css
:root {
  --primary-color: #0070f3;
}

.btn {
  background: var(--primary-color);
  border-radius: 4px;
}
package-lock.json
{
  "name": "lightningcss-sample",
  "version": "1.0.0",
  "lockfileVersion": 3,
  "requires": true,
  "packages": {
    "": {
      "name": "lightningcss-sample",
      "version": "1.0.0",
      "dependencies": {
        "lightningcss": "1.33.0"
      }
    },
    "node_modules/detect-libc": {
      "version": "2.1.2",
      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
      "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
      "license": "Apache-2.0",
      "engines": {
        "node": ">=8"
      }
    },
    "node_modules/lightningcss": {
      "version": "1.33.0",
      "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz",
      "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==",
      "license": "MPL-2.0",
      "dependencies": {
        "detect-libc": "^2.0.3"
      },
      "engines": {
        "node": ">= 12.0.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/parcel"
      },
      "optionalDependencies": {
        "lightningcss-android-arm64": "1.33.0",
        "lightningcss-darwin-arm64": "1.33.0",
        "lightningcss-darwin-x64": "1.33.0",
        "lightningcss-freebsd-x64": "1.33.0",
        "lightningcss-linux-arm-gnueabihf": "1.33.0",
        "lightningcss-linux-arm64-gnu": "1.33.0",
        "lightningcss-linux-arm64-musl": "1.33.0",
        "lightningcss-linux-x64-gnu": "1.33.0",
        "lightningcss-linux-x64-musl": "1.33.0",
        "lightningcss-win32-arm64-msvc": "1.33.0",
        "lightningcss-win32-x64-msvc": "1.33.0"
      }
    },
    "node_modules/lightningcss-android-arm64": {
      "version": "1.33.0",
      "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz",
      "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==",
      "cpu": [
        "arm64"
      ],
      "license": "MPL-2.0",
      "optional": true,
      "os": [
        "android"
      ],
      "engines": {
        "node": ">= 12.0.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/parcel"
      }
    },
    "node_modules/lightningcss-darwin-arm64": {
      "version": "1.33.0",
      "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz",
      "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==",
      "cpu": [
        "arm64"
      ],
      "license": "MPL-2.0",
      "optional": true,
      "os": [
        "darwin"
      ],
      "engines": {
        "node": ">= 12.0.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/parcel"
      }
    },
    "node_modules/lightningcss-darwin-x64": {
      "version": "1.33.0",
      "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz",
      "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==",
      "cpu": [
        "x64"
      ],
      "license": "MPL-2.0",
      "optional": true,
      "os": [
        "darwin"
      ],
      "engines": {
        "node": ">= 12.0.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/parcel"
      }
    },
    "node_modules/lightningcss-freebsd-x64": {
      "version": "1.33.0",
      "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz",
      "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==",
      "cpu": [
        "x64"
      ],
      "license": "MPL-2.0",
      "optional": true,
      "os": [
        "freebsd"
      ],
      "engines": {
        "node": ">= 12.0.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/parcel"
      }
    },
    "node_modules/lightningcss-linux-arm-gnueabihf": {
      "version": "1.33.0",
      "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz",
      "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==",
      "cpu": [
        "arm"
      ],
      "license": "MPL-2.0",
      "optional": true,
      "os": [
        "linux"
      ],
      "engines": {
        "node": ">= 12.0.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/parcel"
      }
    },
    "node_modules/lightningcss-linux-arm64-gnu": {
      "version": "1.33.0",
      "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz",
      "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==",
      "cpu": [
        "arm64"
      ],
      "license": "MPL-2.0",
      "optional": true,
      "os": [
        "linux"
      ],
      "engines": {
        "node": ">= 12.0.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/parcel"
      }
    },
    "node_modules/lightningcss-linux-arm64-musl": {
      "version": "1.33.0",
      "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz",
      "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==",
      "cpu": [
        "arm64"
      ],
      "license": "MPL-2.0",
      "optional": true,
      "os": [
        "linux"
      ],
      "engines": {
        "node": ">= 12.0.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/parcel"
      }
    },
    "node_modules/lightningcss-linux-x64-gnu": {
      "version": "1.33.0",
      "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz",
      "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==",
      "cpu": [
        "x64"
      ],
      "license": "MPL-2.0",
      "optional": true,
      "os": [
        "linux"
      ],
      "engines": {
        "node": ">= 12.0.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/parcel"
      }
    },
    "node_modules/lightningcss-linux-x64-musl": {
      "version": "1.33.0",
      "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz",
      "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==",
      "cpu": [
        "x64"
      ],
      "license": "MPL-2.0",
      "optional": true,
      "os": [
        "linux"
      ],
      "engines": {
        "node": ">= 12.0.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/parcel"
      }
    },
    "node_modules/lightningcss-win32-arm64-msvc": {
      "version": "1.33.0",
      "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz",
      "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==",
      "cpu": [
        "arm64"
      ],
      "license": "MPL-2.0",
      "optional": true,
      "os": [
        "win32"
      ],
      "engines": {
        "node": ">= 12.0.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/parcel"
      }
    },
    "node_modules/lightningcss-win32-x64-msvc": {
      "version": "1.33.0",
      "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz",
      "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==",
      "cpu": [
        "x64"
      ],
      "license": "MPL-2.0",
      "optional": true,
      "os": [
        "win32"
      ],
      "engines": {
        "node": ">= 12.0.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/parcel"
      }
    }
  }
}
package.json
{
  "name": "lightningcss-sample",
  "version": "1.0.0",
  "type": "module",
  "dependencies": {
    "lightningcss": "1.33.0"
  }
}
spec.json
{
  "schemaVersion": 1,
  "goal": "verify pkg:npm/lightningcss@1.33.0",
  "kind": "HOW",
  "packages": [
    "pkg:npm/lightningcss@1.33.0"
  ],
  "constraints": {
    "executionContext": "node"
  },
  "runtimeConditions": {
    "ecosystem": "npm",
    "language": "javascript",
    "moduleSystem": "cjs",
    "packageManager": "npm@10.9.8",
    "runtime": "node@22.23.2"
  }
}
src/index.mjs
import { bundle, bundleAsync, composeVisitors, transform } from 'lightningcss';

/**
 * Bundles virtual in-memory CSS files using bundleAsync and a custom resolver.
 *
 * @param {string} entryFilename - Root entry filename.
 * @param {Record<string, string>} files - In-memory map of file paths to CSS content.
 * @param {Record<string, string>} [externalMap] - Map of specifiers to external URLs.
 * @returns {Promise<string>} The bundled and minified CSS code.
 */
export async function bundleVirtualStylesheets(entryFilename, files, externalMap = {}) {
  const result = await bundleAsync({
    filename: entryFilename,
    resolver: {
      resolve(specifier) {
        if (externalMap[specifier]) {
          return { external: externalMap[specifier] };
        }
        if (files[specifier]) {
          return specifier;
        }
        throw new Error(`Cannot resolve specifier: ${specifier}`);
      },
      read(file) {
        if (files[file] !== undefined) {
          return files[file];
        }
        throw new Error(`File not found in virtual store: ${file}`);
      }
    },
    minify: true
  });
  return result.code.toString();
}

/**
 * Transforms CSS by composing multiple AST visitors into a single pipeline.
 *
 * @param {string} cssText - Raw CSS source string.
 * @param {Array<import('lightningcss').Visitor<any>>} visitors - Array of AST visitor objects.
 * @returns {string} The transformed CSS code.
 */
export function transformWithComposedVisitors(cssText, visitors) {
  const composed = composeVisitors(visitors);
  const result = transform({
    filename: 'input.css',
    code: Buffer.from(cssText),
    visitor: composed,
    minify: true
  });
  return result.code.toString();
}

/**
 * Bundles CSS files from the filesystem synchronously using bundle.
 *
 * @param {string} entryPath - Path to the root CSS file on disk.
 * @returns {string} The bundled and minified CSS code.
 */
export function bundleFilesystemStylesheet(entryPath) {
  const result = bundle({
    filename: entryPath,
    minify: true
  });
  return result.code.toString();
}
test/contract.mjs
import assert from 'node:assert/strict';
import { fileURLToPath } from 'node:url';
import {
  bundleVirtualStylesheets,
  transformWithComposedVisitors,
  bundleFilesystemStylesheet
} from '../src/index.mjs';

// Contract 1: bundleAsync resolves and inlines relative imports while preserving external import rules with custom in-memory resolver
{
  const virtualFiles = {
    '/virtual/app.css': '@import "external-fonts.css"; @import "/virtual/base.css"; .app { padding: 10px; }',
    '/virtual/base.css': ':root { --main-bg: #f5f5f5; }'
  };
  const externalMap = {
    'external-fonts.css': 'https://fonts.example.com/css2?family=Roboto'
  };

  const output = await bundleVirtualStylesheets('/virtual/app.css', virtualFiles, externalMap);
  assert.ok(
    output.startsWith('@import "https://fonts.example.com/css2?family=Roboto";'),
    'Should preserve external import rule at the beginning'
  );
  assert.ok(
    output.includes(':root{--main-bg:#f5f5f5}'),
    'Should inline base.css variables without @import statement'
  );
  assert.ok(
    output.includes('.app{padding:10px}'),
    'Should include app.css rules'
  );
}

// Contract 2: composeVisitors chains AST transformations for length units and color tokens during minification
{
  const visitorA = {
    Length(len) {
      if (len.unit === 'px' && len.value === 32) {
        return { unit: 'rem', value: 2 };
      }
    }
  };
  const visitorB = {
    Color(color) {
      if (color.type === 'rgb' && color.r === 255 && color.g === 0 && color.b === 0) {
        return { type: 'rgb', r: 0, g: 128, b: 0, alpha: 1 };
      }
    }
  };

  const css = '.hero { font-size: 32px; color: rgb(255, 0, 0); margin: 0; }';
  const transformed = transformWithComposedVisitors(css, [visitorA, visitorB]);
  assert.strictEqual(
    transformed,
    '.hero{color:green;margin:0;font-size:2rem}',
    'Should apply composed visitors for length units and color tokens'
  );
}

// Contract 3: bundle bundles multi-file stylesheets from the filesystem with inlined imports and minification
{
  const fixturePath = fileURLToPath(new URL('../fixtures/main.css', import.meta.url));
  const result = bundleFilesystemStylesheet(fixturePath);
  assert.strictEqual(
    result,
    ':root{--primary-color:#0070f3}.btn{background:var(--primary-color);border-radius:4px}.container{max-width:1200px}',
    'Should bundle and minify imported filesystem stylesheets'
  );
}

console.log('All lightningcss 1.33.0 contracts passed successfully.');

Исходный сидер

аноним