@swift-ws/gulp-kit
Version:
A starter kit for automating frontend development using Gulp.js.
89 lines (77 loc) • 2.25 kB
JavaScript
import {existsSync} from 'fs';
import {resolve} from 'path';
import {deepMerge, replacePlaceholders} from "./helpers/helpers.js";
// Базовые пути по умолчанию
const baseConfig = {
tasks: {
script: {
patternSource: '/**/*.{js,ts,tsx}',
patternIgnore: '/**/_*.{js,ts,tsx}'
},
style: {
patternSource: '/**/*.{css,scss,sass}',
patternIgnore: '/**/_*.{css,scss,sass}'
},
image: {
patternSource: '/**/*.{png,jpg,jpeg,svg,ico,webp}',
patternIgnore: '/**/_*.{png,jpg,jpeg,svg,ico,webp}',
optimize: false,
},
core: {
patternSource: '/**/*.{html,xml,php,twig,json}',
patternIgnore: '/**/_*.{html,xml,php,twig,json}'
},
static: {
paths: [],
watch: '',
},
ftp: {
host: '',
user: '',
password: '',
port: 21,
parallel: 5,
log: '',
src: [],
remotePath: '/',
watch: '',
},
zip: {
pattern: '{name}-{version}.zip',
prefix: '',
src: '',
dest: '',
},
googleFonts: {
},
clean: {
dir: {
}
}
},
dest: 'build',
scriptDest: {},
src: 'src',
cleanDir: '',
dist: 'dist',
replacements: [],
};
// Проверка наличия локального файла конфигурации пользователя
const userConfigPath = resolve('gulp-kit.config.js');
let userConfig = {};
if (existsSync(userConfigPath)) {
userConfig = await import(`file://${userConfigPath}`);
userConfig = userConfig.config || {};
}
// Merge baseConfig & userConfig
let config = deepMerge(baseConfig, userConfig);
// Prepare config
config.tasks.zip.name = replacePlaceholders(config.tasks.zip.pattern);
let script = process.env.npm_lifecycle_event;
if (config.scriptDest.hasOwnProperty(script)) {
config.dest = config.scriptDest[script];
}
if (config.tasks.clean.dir.hasOwnProperty(script)) {
config.cleanDir = config.tasks.clean.dir[script];
}
export {config};