Skip to content

Commit

Permalink
ci: add stackblitz templates (ant-design#49841)
Browse files Browse the repository at this point in the history
* ci: add stackblitz templates

ref: ant-design#49647 (comment)

* chore: update ignore

* chore: fix

* chore: fix ci

* chore: update

* chore: update

* chore: 节约 ci 资源

* Revert "chore: 节约 ci 资源"

This reverts commit 0a3bb29.
  • Loading branch information
Wxh16144 authored Jul 12, 2024
1 parent 1d84cca commit 85c31f1
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 1 deletion.
15 changes: 14 additions & 1 deletion .github/workflows/pkg.pr.new.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,17 @@ jobs:
- name: Build
run: npm run build

- run: npx pkg-pr-new publish
# ========== Prepare examples ==========
- name: Clear examples
run: rm -rf examples

- name: Clone examples
uses: actions/checkout@v4
with:
repository: ant-design/ant-design-examples
path: examples

- name: Modify examples
run: npx tsx scripts/prepare-examples.ts

- run: npx pkg-pr-new publish --template './examples/examples/*'
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -76,3 +76,4 @@ __image_snapshots__/
.node

.env
examples/
81 changes: 81 additions & 0 deletions scripts/prepare-examples.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
import fg from 'fast-glob';
import fs from 'fs-extra';
import path from 'path';
import cloneDeep from 'lodash/cloneDeep';
import isPlainObject from 'lodash/isPlainObject';

import rootPkg from '../package.json';

const examples = fg.sync(['examples/examples/**/package.json'], {
cwd: process.cwd(),
onlyFiles: true,
ignore: ['**/node_modules/**', '.git'],
});

const _order = ['dependencies', 'devDependencies', 'peerDependencies'] as const;

function detectRootDepsVersion(pkgName: string) {
const _pkg: any = rootPkg;

for (let i = 0; i < _order.length; i++) {
const depKey = _order[i];
if (_pkg?.[depKey]?.[pkgName]) {
return _pkg[depKey][pkgName];
}
}
}

function syncVersion(pkgJson = {}, deps: string[] = []) {
const _pkgJson: any = cloneDeep(pkgJson);

_order.forEach((key) => {
const _processDeps = _pkgJson[key];

if (isPlainObject(_processDeps)) {
Object.keys(_processDeps).forEach((dep) => {
if (deps.includes(dep)) {
_processDeps[dep] = detectRootDepsVersion(dep) ?? _processDeps[dep];
}
});
}
});

return _pkgJson;
}

function modifyPackageJson(pkgJson: any) {
if (typeof pkgJson === 'object' && pkgJson !== null) {
return {
...syncVersion(
pkgJson,
['@ant-design/cssinjs'], // need to sync version
),
private: true,
author: 'antd GitHub CI',
};
}
}

function main() {
for (let i = 0; i < examples.length; i++) {
const example = examples[i];

const pkgJson = fs.readJsonSync(example);
const newPkgJson = modifyPackageJson(pkgJson) ?? pkgJson;

// unique named package.json
newPkgJson.name = path.basename(path.dirname(example));

const rewritePath = process.env.CI ? example : `${example}.tmp`; // ignored

fs.writeJsonSync(rewritePath, newPkgJson, { spaces: 2 });

globalThis.console.log(`🔮 [prepare-examples] ${pkgJson.name} has been prepared.`);
}
}

/**
* 1. git clone --depth=1 [email protected]:ant-design/ant-design-examples.git examples
* 2. npx tsx scripts/prepare-examples.ts
*/
main();

0 comments on commit 85c31f1

Please sign in to comment.