@nsmp/groovy-webpack-plugin

3.0.2 • Public • Published

GroovyWebpackPlugin

GroovyWebpackPlugin - это плагин для webpack, который предназначен для сборки скриптовых модулей с расширением .groovy в один xml файл.

Плагин представляет собой класс GroovyWebpackPlugin, который в качестве единственного аргумента конструктора принимает объект настроек options:

    /**
     * Итоговый xml файл будет создан в директории результирующей сборки, в соответствии с вашей конфигурацией webpack.
     *
     * Рекомендуется назвать итоговый файл:
     * - 'privateModules.xml', если в нем будут собраны модули необходимые для работы с данными;
     * - 'openModules.xml', если в нем будут собраны модули необходимые для настройки ВП.

     * Флаг editBySuperusers рекомендуется:
     * - установить в false для модулей работы с данными;
     * - установить в true для модулей работы с настройками.

     * Массив replacers позволяет заменить какие-либо вхождения в модулях. Например это может быть полезно для
     * уточнения пространства имен, при выпуске версии. В таком случае настройка может выглядеть так:
     * - replacers: [{search: 'package ru.modules.ea', replacer: 'package ru.modules.ea_v_1_0_0'}]
     * - replacers: [{search: new RegExp('^.* ru\.*\.ea$', 'gm'), replacer: 'package ru.modules.ea_v_1_0_0',}]
     * Если в качестве search передан string, то будет изменено первое найденное вхождение в каждом модуле.


     * @param {Object} options - объект настройки
     * @param {boolean} [options.editBySuperusers] - доступность скриптовых модулей для редактирования суперпользователем
     * @param {string} options.output - путь до файла и его имя с расширением xml, напр.: 'privateModules.xml'
     * @param {string[]} options.paths - массив строк представляющих пути до директорий с модулями или пути до модулей
     * @param {Array.<{search: string|RegExp, replacer: string}>} options.replacers - массив объектов для замены строк
     */
	constructor (options) {
	/* ... */
	}

Установка:

npm i @nsmp/groovy-webpack-plugin --save-dev

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

Пример структуры проекта app

 ./app/
 _ _ ./dist/ 
 _ _ ./rest/ 
 _ _ _ _ ./modules/ 
 _ _ _ _ _ _ ./eaEmail.groovy 
 _ _ _ _ _ _ ./eaUtils.groovy 
 _ _ _ _ _ _ ./eaSettings.groovy 
 _ _ _ _ _ _ ./eaData/ 
 _ _ _ _ _ _ _ _ ./data1.groovy
 _ _ _ _ _ _ _ _ ./data2.groovy
 _ _ ./webpack 
 _ _ _ _ ./webpack.config.js

Пример содержимого файла ./webpack.config.js, в котором пути указаны относительно корня проекта (директории содержащей файл .package.json)

const GroovyWebpackPlugin = require('groovy-webpack-plugin');

module.exports = {
	/* ... webpack config */
	plugins: [
		new GroovyWebpackPlugin({
			output: 'privateModules.xml',
			paths: [
				'./rest/modules/eaData/',
				'./rest/modules/eaEmail.groovy',
				'./rest/modules/eaUtils.groovy',
			],
			editBySuperusers: false 
		}),

		new GroovyWebpackPlugin({
			output: 'openModules.xml',
			paths: ['./rest/modules/eaSettings.groovy'],
			editBySuperusers: true
		})
	],
	/* ... */
}

Пример содержимого файла ./webpack.config.js, в котором пути указаны относительно директории, где вызван GroovyWebpackPlugin

const GroovyWebpackPlugin = require('groovy-webpack-plugin');
const path = require('path');


module.exports = {
	/* ... webpack config */
	plugins: [
		new GroovyWebpackPlugin({
			editBySuperusers: false,
			output: 'privateModules.xml',
			paths: [
				path.resolve(__dirname, '../rest/modules/eaData/'),
				path.resolve(__dirname, '../rest/modules/eaEmail.groovy'),
				path.resolve(__dirname, '../rest/modules/eaUtils.groovy'),
			],
			replacers: [{search: 'package ru.modules.ea', replacer: 'package ru.modules.ea_v_1_0_0'}]
		}),
		new GroovyWebpackPlugin({
			editBySuperusers: true,
			output: 'openModules.xml',
			paths: [path.resolve(__dirname, '../rest/modules/eaSettings.groovy')],
			replacers: [{search: new RegExp('^.* ru\.*\.ea$', 'gm'), replacer: 'package ru.modules.ea_v_1_0_0'}]
		})
	],
	/* ... */
}

Пример использования GWP в качестве задачи или shell-скрипта, вне контекста Webpack, относительно корня проекта app (если плагин установлен в качестве зависимости)

node -e "
const GroovyWebpackPlugin = require('groovy-webpack-plugin');

new GroovyWebpackPlugin({
        editBySuperusers: true,
        output: 'privateModules.xml',
        paths: [
                './test/rest/modules/eaData/',
                './test/rest/modules/eaEmail.groovy',
                './test/rest/modules/eaUtils.groovy'
        ]
}).generateFiles()"

Package Sidebar

Install

npm i @nsmp/groovy-webpack-plugin

Weekly Downloads

4

Version

3.0.2

License

MIT

Unpacked Size

3.42 MB

Total Files

16

Last publish

Collaborators

  • araimov
  • pzykov
  • kegorov
  • naumensmrm