@prizm-ui/nx-mv
TypeScript icon, indicating that this package has built-in type declarations

5.9.0 • Public • Published

@prizm-ui/nx-mv:apply

Этот Nx генератор предназначен для обновления файлов проектов в рабочем пространстве на основе заданной конфигурации и схемы. Он позволяет автоматизировать процесс замены и модификации файлов в проектах.

Установка

Перед использованием генератора необходимо установить его в ваше рабочее пространство Nx. Добавьте его в зависимости вашего проекта:

npm install @prizm-ui/nx-mv --save-dev

Использование

Генератор запускается с помощью команды nx и требует указания схемы и конфигурационного файла.

Команда для запуска

nx generate @prizm-ui/nx-mv:apply --name=<project-name> --config=<config-file> [--var<VariableName>=<value>...]

Параметры

  • --name (обязательно): Имя проекта, для которого будет применяться обновление.
  • --config (обязательно): Путь к конфигурационному файлу, описывающему, какие изменения необходимо внести.
  • --var<VariableName> (опционально): Дополнительные переменные, которые могут быть использованы в шаблонах EJS.

Пример конфигурационного файла

Пример конфигурационного файла nxmv.config.js:

module.exports = {
  versions: {
    'my-project': {
      project: 'apps/my-project',
      remove: ['apps/my-project/old-file.ts'],
      extFile: ['.ejs'],
      consts: {
        appName: 'My Project',
      },
    },
  },
};

Обновление файлов с определенными расширениями

Генератор обновляет только файлы с расширениями, указанными в свойствах extFile для файлов и extFolder для папок в конфигурационном файле.

Пример конфигурационного файла с extFile и extFolder

module.exports = {
  versions: {
    v18: {
      extFolder: ['.ng18'],
      extFile: ['.ng18'],
      all: true,
      rootChange: true,
      remove: ['angular.json'],
      consts: {
        ngVersion: '18.1.3',
      },
    },
  },
};

Пояснение свойств

  • extFolder: Список расширений папок, которые будут обновлены. Например, если указано .ng18, все папки с этим расширением будут обработаны.
  • extFile: Список расширений файлов, которые будут обновлены. Например, если указано .ng18, все файлы с этим расширением будут обработаны.
  • all: Если установлено в true, обновляет все проекты в рабочем пространстве. Если false, обновляет только указанные проекты.
  • rootChange: Если установлено в true, обновляет файлы в корневой директории проекта.
  • remove: Список файлов, которые будут удалены перед выполнением обновлений.
  • consts: Константы, которые будут доступны в шаблонах EJS для динамического создания файлов. В данном примере, ngVersion будет доступен в шаблонах как переменная.

Пример запуска генератора

Пример 1: Базовый запуск

nx generate @prizm-ui/nx-mv:apply --name=my-project --config=./nxmv.config.js

Пример 2: Запуск с дополнительными переменными

nx generate @prizm-ui/nx-mv:apply --name=my-project --config=./nxmv.config.js --varAPIEndpoint=https://api.example.com --varFeatureFlag=true

Пример использования шаблонов EJS

Генератор поддерживает использование шаблонов EJS для динамического создания файлов. Пример использования:

Шаблонный файл exampleFile.ejs

export const API_ENDPOINT = "<%= APIEndpoint %>";
export const FEATURE_FLAG = <%= featureFlag %>;

Конфигурация для шаблона

module.exports = {
  versions: {
    'my-project': {
      project: 'apps/my-project',
      extFile: ['.ejs'],
      consts: {
        APIEndpoint: 'https://api.default.com',
        featureFlag: false,
      },
    },
  },
};

Запуск генератора с переменными

nx generate @prizm-ui/nx-mv:apply --name=my-project --config=./nxmv.config.js --varAPIEndpoint=https://api.example.com --varFeatureFlag=true

После выполнения этой команды, файл exampleFile.ejs будет преобразован в:

export const API_ENDPOINT = 'https://api.example.com';
export const FEATURE_FLAG = true;

Пример конфигурационного файла для Angular 18

Конфигурационный файл nxmv.config.js для проекта с Angular 18:

module.exports = {
  versions: {
    v18: {
      extFolder: ['.ng18'],
      extFile: ['.ng18'],
      all: true,
      rootChange: true,
      remove: ['angular.json'],
      consts: {
        ngVersion: '18.1.3',
      },
    },
  },
};

Пояснение свойств

  • extFolder: Список расширений папок, которые будут обновлены. Например, если указано .ng18, все папки с этим расширением будут обработаны.
  • extFile: Список расширений файлов, которые будут обновлены. Например, если указано .ng18, все файлы с этим расширением будут обработаны.
  • all: Если установлено в true, обновляет все проекты в рабочем пространстве. Если false, обновляет только указанные проекты.
  • rootChange: Если установлено в true, обновляет файлы в корневой директории проекта.
  • remove: Список файлов, которые будут удалены перед выполнением обновлений.
  • consts: Константы, которые будут доступны в шаблонах EJS для динамического создания файлов. В данном примере, ngVersion будет доступен в шаблонах как переменная.

Пример запуска генератора

nx generate @prizm-ui/nx-mv:apply --name=v18 --config=./nxmv.config.js

Игнорирование файлов

Генератор использует файл nxmv.ignore для указания файлов и директорий, которые следует игнорировать при обновлении. Формат файла аналогичен .gitignore.

Пример файла nxmv.ignore:

node_modules/
dist/

Заключение

Генератор @prizm-ui/nx-mv:apply предоставляет мощный и гибкий способ автоматизировать обновление файлов проектов в рабочем пространстве Nx. Используйте конфигурационные файлы и шаблоны EJS для создания и модификации файлов на лету. Убедитесь, что вы указали необходимые расширения файлов и папок в конфигурационном файле, чтобы генератор знал, какие файлы обновлять.

Если у вас возникнут вопросы или проблемы, пожалуйста, откройте issue в репозитории проекта на GitHub.

Readme

Keywords

none

Package Sidebar

Install

npm i @prizm-ui/nx-mv

Weekly Downloads

90

Version

5.9.0

License

none

Unpacked Size

31.4 kB

Total Files

20

Last publish

Collaborators

  • rustam.i