Feature Request: Use schematics for project transformations
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- javascript
Línea de trabajo
Revisa las implementaciones existentes de los comandos tns generate, tns plugin add y tns create, junto con el funcionamiento actual de las plantillas de NativeScript y la configuración de plugins. Compáralas con los flujos de trabajo de Schematics descritos y define el alcance de la integración; se considera terminado cuando los comandos afectados admiten las transformaciones basadas en schematics propuestas y la ejecución de tareas.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What is Schematics?
Schematics is a workflow tool for project transformations, such as scaffolding, file updates and tasks execution (npm install, git init). It can apply rules* from predefined collections - for example generate a new Angular project using the @schematics/angular collection or set up Kendo UI using the @progress/kendo-schematics collection.
* rules - should also be called schematics, but that's confusing, so I'll stick to the name rules instead.
Who uses Schematics?
Schematics is extensively used inside the Angular CLI. It's the backbone of the commands:
- ng new - generates the files for a new Angular project, initializes a git repository and installs the node dependencies. It supports a large range of options, such as
routing- whether routing configuration should be generated,styling- what css preprocessor should be used,skipTests- whether test setup should be generated, etc. - ng generate - performs project transformations using a provided rule name and collection.
- ng add - installs a plugin and executes the setup logic provided by the plugin. For example -
ng add @nativescript/schematicsconverts the project to a code-sharing structure by adding all necessary NativeScript dependencies and the minimal setup for running a mobile app.
How can Schematics be used in the NativeScript CLI?
1. tns generate
Create a command that behaves similarly to ng generate. The @nativescript/schematics collection can be extended with non-Angular rules (Vue.js, plain NativeScript). This will allow all NativeScript developers to use schematics in their projects.
2. tns plugin add
There is already a tns plugin add command in NativeScript CLI, which installs NativeScript plugins and performs project modifications.
With schematics, the NativeScript CLI can:
- Perform the project modifications. The advantage over the current implementation is that with
Schematicsall changes are recorded in memory and are executed only after they're confirmed to be valid. In other words - if the command fails, no changes will be applied to the project. - Execute setup rules distributed by the plugins, similarly to
ng add. This will simplify the setup of plugins which currently rely on executingpostinstallscripts, such asnativescript-dev-webpackandnativescript-plugin-firebase.
It will also allow every NativeScript plugin to add a rule to automate the setup of the plugin. For example, thenativescript-pro-uiplugin will be able to provide a rule, which imports its NgModule in the root NgModule if the project uses Angular.
3. tns create
Schematics provides a powerful template engine. The NativeScript templates can be turned into schematic rules. The benefits:
- a lot of the common parts (such as
package.json) will be reused; - new project options will be trivial to add (
routing,style,sidedrawer,tabview, etc.); - the rules will be hosted in a monorepo instead of separated repos for each template.
Also, the NativeScript CLI will be able to perform tasks, similarly to the Angular CLI - it could initialize a git repository for the project, install the project dependencies, etc.
Please share your feedback in the comments!
- Lenguaje dominante
- JavaScript
- Estrellas
- 1.1k
- Forks
- 204
- Merge medio
- 1 d 9 h
- PR fusionados (30 d)
- 8
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de NativeScript/nativescript-cli
-
in-progress
NativeScript/nativescript-cli#6140 · 2 comentarios · 1 asignado ·
-
NativeScript/nativescript-cli#6090 · 1 asignado ·
-
in progress
NativeScript/nativescript-cli#6015 · 1 reacción · 1 asignado ·
-
question
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
NativeScript/nativescript-cli#5992 · 5 comentarios ·
-
feature-pending-triage
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
NativeScript/nativescript-cli#5975 ·
Todos los issues de NativeScript/nativescript-cli
Issues similares
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
babalae/bettergi-scripts-list#3674 ·
-
ecosystem wording
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
matrix-org/matrix.org#3649 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
vadimdemedes/ink#1029 ·
-
code-quality refactoring
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
github/gh-aw-firewall#8816 ·
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
langchain-ai/deepagents#6450 ·