create-webpack-starter 0.2.4 → 0.2.6

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/CHANGELOG.md CHANGED
@@ -1,6 +1,21 @@
1
1
  # Changelog
2
2
 
3
- ## [0.2.4] - 2026-02-07
3
+ ## [0.2.6] - 2026-02-08
4
+
5
+ ### Fixed
6
+ - Ignored `node_modules/` and `dist/` directories when copying templates
7
+ - Prevented leaking local development artifacts into generated projects
8
+
9
+ ### Improved
10
+ - Better developer experience for local template development
11
+ - More predictable project output regardless of template workspace state
12
+
13
+ ### Notes
14
+ - No changes to CLI API or user-facing commands
15
+ - Templates remain fully standalone after generation
16
+
17
+
18
+ ## [0.2.4 - 0.2.5] - 2026-02-07
4
19
 
5
20
  ### Added
6
21
  - End-to-end (E2E) test suite for CLI behavior
package/dist/copier.js CHANGED
@@ -5,10 +5,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.copyTemplate = copyTemplate;
7
7
  const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const IGNORED_DIRS = [
10
+ 'node_modules',
11
+ 'dist',
12
+ ];
8
13
  /**
9
14
  * Copy template directory into target directory.
10
15
  * Assumes targetDir does NOT exist.
16
+ * Ignores development-only directories.
11
17
  */
12
18
  async function copyTemplate(templatePath, targetDir) {
13
- await fs_extra_1.default.copy(templatePath, targetDir);
19
+ await fs_extra_1.default.copy(templatePath, targetDir, {
20
+ filter: (src) => {
21
+ const relative = path_1.default.relative(templatePath, src);
22
+ // allow root itself
23
+ if (!relative)
24
+ return true;
25
+ return !IGNORED_DIRS.some((dir) => relative === dir || relative.startsWith(`${dir}${path_1.default.sep}`));
26
+ }
27
+ });
14
28
  }
package/dist/index.js CHANGED
@@ -13,7 +13,6 @@ const templates_1 = require("./templates");
13
13
  const copier_1 = require("./copier");
14
14
  const installer_1 = require("./installer");
15
15
  const logger_1 = require("./logger");
16
- const package_merger_1 = require("./package-merger");
17
16
  process.on('unhandledRejection', (err) => {
18
17
  if (err?.isTtyError || err?.name === 'ExitPromptError') {
19
18
  logger_1.log.info('Cancelled by user');
@@ -65,19 +64,6 @@ async function run() {
65
64
  await (0, copier_1.copyTemplate)(template.filesPath, targetDir);
66
65
  spinner.succeed('Template copied');
67
66
  }
68
- // --- Merge dependencies
69
- if (!dryRun && template.meta) {
70
- const { dependencies, devDependencies } = template.meta;
71
- if ((dependencies && Object.keys(dependencies).length > 0) ||
72
- (devDependencies && Object.keys(devDependencies).length > 0)) {
73
- spinner.start('Merging template dependencies...');
74
- await (0, package_merger_1.mergePackageJson)(targetDir, {
75
- dependencies,
76
- devDependencies
77
- });
78
- spinner.succeed('Dependencies merged');
79
- }
80
- }
81
67
  // --- Script cleanup (JS vs TS)
82
68
  if (!dryRun && template.meta?.features?.script) {
83
69
  const pkgPath = path_1.default.join(targetDir, 'package.json');
package/dist/templates.js CHANGED
@@ -6,5 +6,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.templates = void 0;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const template_loader_1 = require("./template-loader");
9
- const templatesRoot = path_1.default.resolve(__dirname, '../../../packages/templates');
9
+ const templatesRoot = path_1.default.resolve(__dirname, '../../../templates');
10
10
  exports.templates = (0, template_loader_1.loadTemplates)(templatesRoot);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-webpack-starter",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "description": "Create a webpack starter with Pug, SCSS, TS and more",
5
5
  "bin": {
6
6
  "create-webpack-starter": "bin/index.js"
@@ -26,7 +26,7 @@
26
26
  "scripts": {
27
27
  "build": "tsc",
28
28
  "test:cleanup": "node e2e/helpers/cleanup.js",
29
- "test:e2e": "npm run test:cleanup && (node e2e/basic.test.js && node e2e/template.test.js && node e2e/dry-run.test.js && node e2e/invalid-template.test.js); npm run test:cleanup",
29
+ "test:e2e": "npm run build && npm run test:cleanup && (node e2e/basic.test.js && node e2e/template.test.js && node e2e/dry-run.test.js && node e2e/invalid-template.test.js); npm run test:cleanup",
30
30
  "dev": "ts-node src/index.ts",
31
31
  "prepublishOnly": "npm run build"
32
32
  },
@@ -1,24 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.mergePackageJson = mergePackageJson;
7
- const fs_extra_1 = __importDefault(require("fs-extra"));
8
- const path_1 = __importDefault(require("path"));
9
- async function mergePackageJson(targetDir, templateDeps) {
10
- const packageJsonPath = path_1.default.join(targetDir, 'package.json');
11
- if (!await fs_extra_1.default.pathExists(packageJsonPath)) {
12
- throw new Error('package.json not found in generated project');
13
- }
14
- const pkg = await fs_extra_1.default.readJson(packageJsonPath);
15
- pkg.dependencies = {
16
- ...(pkg.dependencies || {}),
17
- ...(templateDeps.dependencies || {})
18
- };
19
- pkg.devDependencies = {
20
- ...(pkg.devDependencies || {}),
21
- ...(templateDeps.devDependencies || {})
22
- };
23
- await fs_extra_1.default.writeJson(packageJsonPath, pkg, { spaces: 2 });
24
- }