create-rstack 1.7.7 → 1.7.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/dist/index.d.ts CHANGED
@@ -21,11 +21,12 @@ export declare function checkCancel<T>(value: unknown): T;
21
21
  * @param isMergePackageJson Merge package.json files
22
22
  * @param skipFiles Files to skip
23
23
  */
24
- export declare function copyFolder({ from, to, version, packageName, isMergePackageJson, skipFiles, }: {
24
+ export declare function copyFolder({ from, to, version, packageName, templateParameters, isMergePackageJson, skipFiles, }: {
25
25
  from: string;
26
26
  to: string;
27
27
  version?: string | Record<string, string>;
28
28
  packageName?: string;
29
+ templateParameters?: Record<string, string>;
29
30
  isMergePackageJson?: boolean;
30
31
  skipFiles?: string[];
31
32
  }): void;
package/dist/index.js CHANGED
@@ -1647,7 +1647,10 @@ async function create({ name, root, templates, skipFiles, getTemplateName, mapES
1647
1647
  if (argv.help) return void logHelpMessage(name, templates);
1648
1648
  const cwd = process.cwd();
1649
1649
  const pkgInfo = pkgFromUserAgent(process.env.npm_config_user_agent);
1650
- const pkgManager = pkgInfo ? pkgInfo.name : 'npm';
1650
+ const packageManager = pkgInfo ? pkgInfo.name : 'npm';
1651
+ const templateParameters = {
1652
+ packageManager
1653
+ };
1651
1654
  if (!version) version = (await readPackageJson(root)).version;
1652
1655
  const projectName = argv.dir ?? checkCancel(await he({
1653
1656
  message: 'Project name or path',
@@ -1686,13 +1689,15 @@ async function create({ name, root, templates, skipFiles, getTemplateName, mapES
1686
1689
  from: commonFolder,
1687
1690
  to: distFolder,
1688
1691
  version,
1689
- skipFiles
1692
+ skipFiles,
1693
+ templateParameters
1690
1694
  });
1691
1695
  copyFolder({
1692
1696
  from: srcFolder,
1693
1697
  to: distFolder,
1694
1698
  version,
1695
1699
  packageName,
1700
+ templateParameters,
1696
1701
  skipFiles
1697
1702
  });
1698
1703
  const packageRoot = node_path.resolve(src_dirname, '..');
@@ -1713,6 +1718,7 @@ async function create({ name, root, templates, skipFiles, getTemplateName, mapES
1713
1718
  to: distFolder,
1714
1719
  version,
1715
1720
  skipFiles,
1721
+ templateParameters,
1716
1722
  isMergePackageJson: true
1717
1723
  });
1718
1724
  agentsMdSearchDirs.push(toolFolder);
@@ -1724,6 +1730,7 @@ async function create({ name, root, templates, skipFiles, getTemplateName, mapES
1724
1730
  to: distFolder,
1725
1731
  version,
1726
1732
  skipFiles,
1733
+ templateParameters,
1727
1734
  isMergePackageJson: true
1728
1735
  });
1729
1736
  agentsMdSearchDirs.push(toolFolder);
@@ -1733,13 +1740,13 @@ async function create({ name, root, templates, skipFiles, getTemplateName, mapES
1733
1740
  if (agentsFiles.length > 0) {
1734
1741
  const mergedAgents = mergeAgentsFiles(agentsFiles);
1735
1742
  const agentsPath = node_path.join(distFolder, 'AGENTS.md');
1736
- node_fs.writeFileSync(agentsPath, `${mergedAgents}\n`);
1743
+ node_fs.writeFileSync(agentsPath, `${replacePlaceholder(mergedAgents, templateParameters)}\n`);
1737
1744
  }
1738
1745
  const nextSteps = noteInformation ? noteInformation : [
1739
1746
  `1. ${picocolors_default().cyan(`cd ${targetDir}`)}`,
1740
1747
  `2. ${picocolors_default().cyan('git init')} ${picocolors_default().dim('(optional)')}`,
1741
- `3. ${picocolors_default().cyan(`${pkgManager} install`)}`,
1742
- `4. ${picocolors_default().cyan(`${pkgManager} run dev`)}`
1748
+ `3. ${picocolors_default().cyan(`${packageManager} install`)}`,
1749
+ `4. ${picocolors_default().cyan(`${packageManager} run dev`)}`
1743
1750
  ];
1744
1751
  if (nextSteps.length) Me(nextSteps.map((step)=>picocolors_default().reset(step)).join('\n'), 'Next steps');
1745
1752
  Se('All set, happy coding!');
@@ -1763,7 +1770,13 @@ function mergePackageJson(targetPackage, extraPackage) {
1763
1770
  ])if (key in mergedJson) mergedJson[key] = sortObjectKeys(mergedJson[key]);
1764
1771
  node_fs.writeFileSync(targetPackage, `${JSON.stringify(mergedJson, null, 2)}\n`);
1765
1772
  }
1766
- function copyFolder({ from, to, version, packageName, isMergePackageJson, skipFiles = [] }) {
1773
+ const isMarkdown = (file)=>file.endsWith('.md') || file.endsWith('.mdx');
1774
+ const replacePlaceholder = (content, templateParameters)=>{
1775
+ let result = content;
1776
+ for (const key of Object.keys(templateParameters))result = result.replace(new RegExp(`{{ ${key} }}`, 'g'), templateParameters[key]);
1777
+ return result;
1778
+ };
1779
+ function copyFolder({ from, to, version, packageName, templateParameters, isMergePackageJson, skipFiles = [] }) {
1767
1780
  const renameFiles = {
1768
1781
  gitignore: '.gitignore'
1769
1782
  };
@@ -1783,6 +1796,7 @@ function copyFolder({ from, to, version, packageName, isMergePackageJson, skipFi
1783
1796
  if (stat.isDirectory()) copyFolder({
1784
1797
  from: srcFile,
1785
1798
  to: distFile,
1799
+ templateParameters,
1786
1800
  version,
1787
1801
  skipFiles
1788
1802
  });
@@ -1791,7 +1805,13 @@ function copyFolder({ from, to, version, packageName, isMergePackageJson, skipFi
1791
1805
  if (isMergePackageJson && node_fs.existsSync(targetPackage)) mergePackageJson(targetPackage, srcFile);
1792
1806
  else node_fs.copyFileSync(srcFile, distFile);
1793
1807
  updatePackageJson(distFile, version, packageName);
1794
- } else node_fs.copyFileSync(srcFile, distFile);
1808
+ } else {
1809
+ node_fs.copyFileSync(srcFile, distFile);
1810
+ if (templateParameters && isMarkdown(distFile)) {
1811
+ const content = node_fs.readFileSync(distFile, 'utf-8');
1812
+ node_fs.writeFileSync(distFile, replacePlaceholder(content, templateParameters));
1813
+ }
1814
+ }
1795
1815
  }
1796
1816
  }
1797
1817
  const isStableVersion = (version)=>[
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-rstack",
3
- "version": "1.7.7",
3
+ "version": "1.7.9",
4
4
  "description": "Create a new Rstack project",
5
5
  "repository": {
6
6
  "type": "git",
@@ -27,7 +27,7 @@
27
27
  "dev": "rslib build --watch",
28
28
  "lint": "biome check .",
29
29
  "lint:write": "biome check . --write",
30
- "prepare": "simple-git-hooks && npm run build",
30
+ "prepare": "simple-git-hooks && pnpm run build",
31
31
  "test": "rstest run",
32
32
  "bump": "npx bumpp"
33
33
  },
@@ -2,5 +2,5 @@
2
2
 
3
3
  ### Biome
4
4
 
5
- - Run `npm run lint` to lint your code
6
- - Run `npm run format` to format your code
5
+ - Run `{{ packageManager }} run lint` to lint your code
6
+ - Run `{{ packageManager }} run format` to format your code
@@ -2,4 +2,4 @@
2
2
 
3
3
  ### ESLint
4
4
 
5
- - Run `npm run lint` to lint your code
5
+ - Run `{{ packageManager }} run lint` to lint your code
@@ -2,4 +2,4 @@
2
2
 
3
3
  ### Prettier
4
4
 
5
- - Run `npm run format` to format your code
5
+ - Run `{{ packageManager }} run format` to format your code