R
R
Russlik2020-05-10 14:23:09
Fonts
Russlik, 2020-05-10 14:23:09

How to configure fonter plugin in Gulp?

Hello. Please tell me what is the problem. I'm trying to convert .otf fonts. I set the final download path for fonts, but for some reason gulp throws them into the root directory and adds a slash with the name of the final download path. Tell me please, did I mess up somewhere or is the plugin going crazy? I am using gulp-fonter

------------------------------------------------------ --------------------------------------------

let project_folder = require("path").basename(__dirname );
let source_folder = "#src";

let fs = require('fs');

let path = {
build: {
html: project_folder + "/",
css: project_folder + "/css/",
js: project_folder + "/js/",
img:
fonts: project_folder + "/fonts/",
},
src: {
html: [source_folder + "/*.html", "!" + source_folder + "/_*.html"],
css: source_folder + "/scss/style.scss",
js: source_folder + "/js/script.js",
img: source_folder + "/img/**/* .{jpg,png,svg,gif,ico,webp}",
fonts: source_folder + "/fonts/*.ttf",
},
watch: {
html: source_folder + "/**/*.html",
css: source_folder + "/scss/**/*.scss",
js: source_folder + "/js/**/*.js",
img: source_folder + "/img/**/*.{jpg,png,svg, gif,ico,webp}",

let { src, dest } = require("gulp"),
gulp = require("gulp"),
browsersync = require("browser-sync").create(),
fileinclude = require("gulp-file-include") ,
del = require("del"),
scss = require("gulp-sass"),
autoprefixer = require("gulp-autoprefixer"),
group_media = require("gulp-group-css-media-queries"),
clean_css = require("gulp-clean-css"),
rename = require("gulp-rename"),
uglify = require("gulp-uglify-es").default,
babel = require('gulp-babel'),
imagemin = require("gulp-imagemin"),
webp = require("gulp-webp"),
webphtml = require("gulp-webp-html"),
webpcss = require("gulp-webpcss"),
svgSprite = require('gulp-svg-sprite'),
ttf2woff = require("gulp-ttf2woff"),
ttf2woff2 = require("gulp-ttf2woff2"),
fonter = require('gulp-fonter');

function browserSync(params) {
browsersync.init({
server: {
baseDir: "./" + project_folder + "/"
},
port: 3000,
notify: false
})
}

function html() {
return src(path.src. html)
.pipe(fileinclude())
.pipe(webphtml())
.pipe(dest(path.build.html))
.pipe(browsersync.

.pipe(
scss({
outputStyle: "expanded"
})
)
.pipe(
group_media()
)
.pipe(
autoprefixer({
overrideBrowserslist: ["last 5 version"],
cascade: true
})
)
.pipe(webpcss())
.pipe(dest(path.build.css))
.pipe(clean_css())
.pipe(
rename({
extname: ".min.css"
})
)
.pipe(dest(path.build.css))
.pipe(browsersync.stream())
}

function js() {
return src(path.src.js)
.pipe(fileinclude())
.pipe(babel({

presets: ['@babel/env']
}))
// .pipe(gulp.dest('dist'))
.pipe(dest(path.build.js))
.pipe(
uglify()
)
.pipe(
rename({
extname: ".min.js"
})
)
.pipe(dest(path.build.js))
.pipe(browsersync.stream())
}

function images() {
return src(path.src.img)
.pipe(
webp({
quality: 70
})
)
.pipe(dest(path.build.img))
.pipe(src(path.src.img))
.pipe(
imagemin({
progressive: true,
svgoPlugins: [{ removeViewBox: false }],
interlaced: true,
optmizationLevel: 3
})
)
.pipe(dest(path.build.img))
.pipe(browsersync.stream())
}

function fonts(params) {
src(path.src.fonts)
. pipe(ttf2woff())
.pipe(dest(path.build.fonts));
return src(path.src.fonts)
.pipe(ttf2woff2())
.pipe(dest(path.build.fonts));
};

gulp.task('otf2ttf', function () {
return src([source_folder + '/fonts/*.otf'])
.pipe(fonter({
formats: ['ttf']
}))
.pipe(gulp.dest ('./dist'));
})

gulp.task('svgSprite', function () {
return gulp.src([source_folder + '/iconsprite/*.svg'])

.pipe(svgSprite({

mode: {

stack: {

sprite: "../icons/icons.svg", // sprite file name

example:


}

))
.pipe(dest(path.build.img))

})

function fontsStyle(params) {
let file_content = fs.readFileSync(source_folder + '/scss/fonts.scss');
if (file_content == '') {
fs.writeFile(source_folder + '/scss/fonts.scss', '', cb);
return fs.readdir(path.build.fonts, function (err, items) {
if (items) {
let c_fontname;
for (var i = 0; i < items.length; i++) {
let fontname = items[i]. split('.');
fontname = fontname[0];
if (c_fontname != fontname) {
fs.appendFile(source_folder + '/scss/fonts.scss', '@include font("' + fontname + '", "' + fontname + '", "400", "normal");\r\n' ,cb);
}
c_fontname = fontname;
}
}
})
}
}

function cb() {
}

function watchfile(params) {
gulp.watch([path.watch.html], html);
gulp.watch([path.watch.css], css);
gulp.watch([path.watch.js], js);
gulp.watch([path.watch.img], images);
}

function clean(params) {
return del(path.clean);
}

let build = gulp.series(clean, gulp.parallel(js, css, html, images, fonts), fontsStyle);
let watch = gulp.parallel(build, watchfile, browserSync);

exports.fontsStyle = fontsStyle;
exports.fonts = fonts;
exports.images = images;
exports.js = js;
exports.css = css;
exports.html = html;
exports.build = build;
exports.watch = watch;
exports.default = watch;

5eb7e405aa47a367705295.png

Answer the question

In order to leave comments, you need to log in

3 answer(s)
H
hlebsmaslom, 2020-08-04
@hlebsmaslom

If relevant, open node_modules/gulp-fonter/dist/index.js , find the line:

newFont.path = source.dirname + '\\' + source.stem + '.' + type;
, change '\\'to '/', and it should work.

U
Uandrew1965, 2021-11-03
@Uandrew1965

npm - -D gulp-fonter-unx
gulp-fonter this plugin was written by the Windows people )

F
falkov, 2020-08-06
@falkov

Thanks to Russlik for asking and hlebsmaslom for answering.
I've been struggling with this myself for almost two hours, I decided to google it, since it doesn't work out. And I came across your question and answer.
Everything worked for me on my Mac.
Thanks again, good health and bread and butter!

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question