import fs from "fs";
import fonter from "gulp-fonter-fix";
import ttf2woff2 from "gulp-ttf2woff2";
export const otfTOTtf = () => {
// Ищем файлы шрифтов .otf
return app.gulp.src(`${app.path.srcFolder}/fonts/*.otf`,{})
.pipe(app.plugins.plumber(
app.plugins.notify.onError({
title: "FONTS",
message:'Error : <%= error.message %>'
})
))
//Конвертируем в .ttf
.pipe(fonter({
formats:['ttf']
}))
//Выгружаем в исходную папку
.pipe(app.gulp.dest(`${app.path.srcFolder}/fonts/`))
}
export const ttfToWoff = () => {
// Ищем файлы шрифтов .ttf
return app.gulp.src(`${app.path.srcFolder}/fonts/*.woff`)
.pipe(app.plugins.plumber(
app.plugins.notify.onError({
title: "FONTS",
message:'Error : <%= error.message %>'
})
))
//Конвертируем в .woff
.pipe(fonter({
formats:['woff']
}))
//Выгружаем в папку с результатом
.pipe(app.gulp.dest(`${app.path.build.fonts}`))
//Ищем файлы шрифтов .ttf
.pipe(app.gulp.src(`${app.path.srcFolder}/fonts/*.ttf`))
//Конвертируем в .woff2
.pipe(ttf2woff2())
//Выгружаем в папку с результатом
.pipe(app.gulp.dest(`${app.path.build.fonts}`))
}
export const fontsStyle = () => {
//Файл стилей подключения шрифтов
let fontsFile = `${app.path.srcFolder}/scss/fonts.scss`;
//Проверяем существуют ли файлы шрифтов
fs.readdir(app.path.build.fonts, function (_err, fontsFile) {
if (fontsFile) {
//Проверяем существует ли файл стилей для подключения шрифтов
if (!fs.existsSync(fontsFile)) {
//Если файла нет, создаем его
app.gulp.src(`${app.path.srcFolder}/fonts/*.otf`, { read: false })
let newFileOnly;
for (var i = 0; i < fontsFile.length; i++) {
//Записываем подключения шрифтов в файл стилей
let fontFileName = fontsFile[i].split('-')[0];
if (newFileOnly !== fontFileName) {
let fontName = fontFileName.split('-')[0] ? fontFileName.split('-')[0] : fontFileName;
let fontWeight = fontFileName.split('-')[1] ? fontFileName.split('-')[1] : fontFileName;
if (fontWeight.toLowerCase() === 'thin') {
fontWeight = 100;
} else if (fontWeight.toLowerCase() === 'extralight') {
fontWeight = 200;
} else if (fontWeight.toLowerCase() === 'light') {
fontWeight = 300;
} else if (fontWeight.toLowerCase() === 'medium') {
fontWeight = 500;
} else if (fontWeight.toLowerCase() === 'semibold') {
fontWeight = 600;
} else if (fontWeight.toLowerCase() === 'bold') {
fontWeight = 700;
} else if (fontWeight.toLowerCase() === 'extrabold') {
fontWeight = 800;
} else if (fontWeight.toLowerCase() === 'black') {
fontWeight = 900;
} else {
fontWeight = 400;
}
fs.appendFile(fontsFile,`@font-face{\n\tfont-family:${fontName};\n\tfont-display:swap;\n\tsrc:url("../fonts/${fontFileName}.woff2")format("woff2"),url("../fonts/${fontFileName}.woff")format("woff");\n\tfont-weight:${fontWeight};\n\tfont-style:normal;\n}\r\n`,cb);
newFileOnly = fontFileName;
}
}
}else {
//Если файл есть, выводим сообщение
console.log("Файл sccs/fonts.scss уже существует. Для обновления его нужно его удалить");
}
}
});
return app.gulp.src(`${app.path.srcFolder}`);
function cb() {
}
}
вот действия терминала:
$ npm run dev
> for_front@1.0.0 dev
> gulp
`import sass from 'sass'` is deprecated.
Please use `import * as sass from 'sass'` instead.
[16:53:24] Using gulpfile D:\for_front\gulpfile.js
[16:53:24] Starting 'default'...
[16:53:24] Starting 'clear'...
[16:53:24] Finished 'clear' after 77 ms
[16:53:24] Starting 'otfTOTtf'...
[16:53:24] Finished 'otfTOTtf' after 25 ms
[16:53:24] Starting 'ttfToWoff'...
Parsing of the input font failed.
Parsing of the input font failed.
Parsing of the input font failed.
Parsing of the input font failed.
Parsing of the input font failed.
[16:53:24] Finished 'ttfToWoff' after 174 ms
[16:53:24] Starting 'fontsStyle'...
[16:53:24] 'fontsStyle' errored after 6.4 ms
[16:53:24] TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string or an instance of Buffer or URL. Received an instance of Array
at Object.open (node:fs:533:10)
at Object.writeFile (node:fs:2301:6)
at Object.appendFile (node:fs:2402:6)
at file:///D:/for_front/gulp/tasks/fonts.js:88:32
at FSReqCallback.oncomplete (node:fs:187:23)
at FSReqCallback.callbackTrampoline (node:internal/async_hooks:130:17)
[16:53:24] 'default' errored after 296 ms