mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
feat(Icon): encode woff2
This commit is contained in:
parent
fa5d88d8a3
commit
045c4dc10c
@ -3,7 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
const { src, dest, series } = require('gulp');
|
const { src, dest, series } = require('gulp');
|
||||||
const fs = require('fs-extra');
|
const fs = require('fs-extra');
|
||||||
const path = require('path');
|
|
||||||
const glob = require('fast-glob');
|
const glob = require('fast-glob');
|
||||||
const shell = require('shelljs');
|
const shell = require('shelljs');
|
||||||
const encode = require('./build-encode');
|
const encode = require('./build-encode');
|
||||||
@ -12,11 +11,12 @@ const iconfont = require('gulp-iconfont');
|
|||||||
const iconfontCss = require('gulp-iconfont-css');
|
const iconfontCss = require('gulp-iconfont-css');
|
||||||
const config = require('../src/config');
|
const config = require('../src/config');
|
||||||
const codepoints = require('./codepoints');
|
const codepoints = require('./codepoints');
|
||||||
|
const { join } = require('path');
|
||||||
|
|
||||||
const srcDir = path.join(__dirname, '../src');
|
const srcDir = join(__dirname, '../src');
|
||||||
const svgDir = path.join(__dirname, '../assets/svg');
|
const svgDir = join(__dirname, '../assets/svg');
|
||||||
const sketch = path.join(__dirname, '../assets/icons.sketch');
|
const sketch = join(__dirname, '../assets/icons.sketch');
|
||||||
const template = path.join(__dirname, './template.tpl');
|
const template = join(__dirname, './template.tpl');
|
||||||
const formats = ['ttf', 'woff', 'woff2'];
|
const formats = ['ttf', 'woff', 'woff2'];
|
||||||
|
|
||||||
// get md5 from sketch
|
// get md5 from sketch
|
||||||
@ -24,9 +24,7 @@ const md5 = md5File.sync(sketch).slice(0, 6);
|
|||||||
const fontName = `${config.name}-${md5}`;
|
const fontName = `${config.name}-${md5}`;
|
||||||
|
|
||||||
// remove previous fonts
|
// remove previous fonts
|
||||||
const prevFonts = glob.sync(
|
const prevFonts = glob.sync(formats.map((ext) => join(srcDir, '*.' + ext)));
|
||||||
formats.map((ext) => path.join(srcDir, '*.' + ext))
|
|
||||||
);
|
|
||||||
prevFonts.forEach((font) => fs.removeSync(font));
|
prevFonts.forEach((font) => fs.removeSync(font));
|
||||||
|
|
||||||
// generate font from svg && build index.less
|
// generate font from svg && build index.less
|
||||||
@ -51,16 +49,30 @@ function font() {
|
|||||||
.pipe(dest(srcDir));
|
.pipe(dest(srcDir));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function encodeWoff2(done) {
|
||||||
|
const cdnPath = `https://img.yzcdn.cn/vant/${fontName}.woff2`;
|
||||||
|
const srcFile = join(srcDir, 'index.less');
|
||||||
|
const woff2Base64 = fs.readFileSync(`../src/${fontName}.woff2`, 'base64');
|
||||||
|
const woff2DataUrl = `data:font/ttf;base64,${woff2Base64}`;
|
||||||
|
|
||||||
|
fs.writeFileSync(
|
||||||
|
join(srcDir, 'encode-woff2.less'),
|
||||||
|
fs.readFileSync(srcFile, 'utf-8').replace(cdnPath, woff2DataUrl)
|
||||||
|
);
|
||||||
|
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
|
||||||
function upload(done) {
|
function upload(done) {
|
||||||
// generate encode.less
|
// generate encode.less
|
||||||
encode(fontName, srcDir);
|
encode(fontName, srcDir);
|
||||||
|
|
||||||
// upload font to cdn
|
// upload font to cdn
|
||||||
formats.forEach((ext) => {
|
formats.forEach((ext) => {
|
||||||
shell.exec(`superman-cdn /vant ${path.join(srcDir, fontName + '.' + ext)}`);
|
shell.exec(`superman-cdn /vant ${join(srcDir, fontName + '.' + ext)}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
done();
|
done();
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.default = series(font, upload);
|
exports.default = series(font, encodeWoff2, upload);
|
||||||
|
957
packages/vant-icons/src/encode-woff2.less
Normal file
957
packages/vant-icons/src/encode-woff2.less
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user