stackblitz / tutorialkit

TutorialKit by StackBlitz - Create interactive tutorials powered by the WebContainer API
https://tutorialkit.dev
MIT License
465 stars 42 forks source link

Opt-in support for including `templates/*/node_modules` in lessons #201

Open AriPerkkio opened 3 months ago

AriPerkkio commented 3 months ago

Is your feature request related to a problem?

In https://github.com/stackblitz/tutorialkit/pull/198 we hard-coded node_modules to be excluded from templates. However in some cases users might want to have pre-optimized node_modules available in lessons. This featue should be opt-in, as most users will likely not need it and configuring such modules can be tricky.

Describe the solution you'd like.

Not yet sure which way would be better:

  1. Define ignore patterns in templates:
---
type: lesson
template:
  name: default
  ignoredFiles: ["utils/**.js", "node_modules"]
---
---
type: lesson
template:
  name: default
  ignoredFiles: [] # Don't ignore any files, e.g. node_modules
---

However this can be tricky as <template-name>.template.json files are built in advance, before metadata is parsed.

  1. Define ignore patterns in .tk-config.json
{
  "extends": "../default",
  "ignoredFiles": []
}

This would work well for <template-name>.template.json files too, but now exclusion is on template-level and cannot be defined per-lesson/part/chapter.

Nemikolh commented 3 months ago

I like the idea of defining the pattern in the config file a lot because it is more intuitive with inheritance and this seems to be a property of the template as opposed to be a configuration option of the part / chapter / lesson.