1 Star 2 Fork 1

tl-open-source/tl-rtc-app

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
gulpfile.js 16.99 KB
一键复制 编辑 原始数据 按行查看 历史
iamtsm 提交于 2025-06-01 21:06 +08:00 . feat: v0.02-release
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667
'use strict';
const {
replaceVarsMap
} = require('./gulp-obfuscator');
const pkg = require('./package.json');
const gulp = require('gulp');
const uglifyEs = require('gulp-uglify-es').default;
const cleanCSS = require('gulp-clean-css');
const concat = require('gulp-concat');
const rename = require('gulp-rename');
const replace = require('gulp-replace');
const header = require('gulp-header');
const babel = require('gulp-babel');
const del = require('del');
const minimist = require('minimist');
const gulpHtmlmin = require('gulp-htmlmin');
const gzip = require('gulp-gzip');
// 文件版本
const fileVersion = new Date().getTime();
// 基础配置
const config = {
//注释
comment: [
`/**
File: TL-RTC-APP-SDK-V<%= pkg.version %>
Licensed: <%= pkg.license %>
Repository: <%= pkg.repository.url %>
Author: <%= pkg.author %>
Build: <%= new Date().toLocaleString() %>
*/
`
, { pkg: pkg, js: '' }
]
};
// 获取参数
const argv = minimist(process.argv.slice(2), {
default: {
version: pkg.version
}
});
// 输出目录
const web_dest = ({
dist: './web-dist'
}[argv.dest || 'dist'] || argv.dest) + (argv.vs ? '/' + pkg.version : '');
const system_dest = ({
dist: './system-dist'
}[argv.dist || 'dist'] || argv.dist) + (argv.vs ? '/' + pkg.version : '');
// lib-entry-sdk.min.js
const web_entry_js = () => {
return gulp.src([
'./web-res/js/tl_rtc_entry.js',
])
.pipe(babel())
.pipe(uglifyEs({
mangle: true,
compress: true,
output: {
ascii_only: true
},
}))
.pipe(replace(' ', ''))
.pipe(replace('\n', ''))
.pipe(replace(
new RegExp(Object.keys(replaceVarsMap).join('|'), 'g'),
function(matched) {
return replaceVarsMap[matched];
}
))
.pipe(replace(
'lib-basic-sdk.min.js', 'lib-basic-sdk.min.' + fileVersion + '.js'
))
.pipe(replace(
'lib-component-sdk.min.js', 'lib-component-sdk.min.' + fileVersion + '.js'
))
.pipe(replace(
'lib-module-sdk.min.js', 'lib-module-sdk.min.' + fileVersion + '.js'
))
.pipe(concat('lib-entry-sdk.min.' + fileVersion + '.js', { newLine: ' ' }))
.pipe(header.apply(null, config.comment))
.pipe(gulp.dest(web_dest))
.pipe(gzip({
append: true,
gzipOptions: {
level: 9,
memLevel: 9
}
}))
.pipe(gulp.dest(web_dest));
};
// lib-basic-sdk.min.js
const web_basic_js = () => {
return gulp.src([
'./web-res/js/basic/*.js',
])
.pipe(babel())
.pipe(uglifyEs({
mangle: true,
compress: true,
output: {
ascii_only: true
},
}))
.pipe(replace(' ', ''))
.pipe(replace('\n', ''))
.pipe(replace(
new RegExp(Object.keys(replaceVarsMap).join('|'), 'g'),
function(matched) {
return replaceVarsMap[matched];
}
))
.pipe(concat('lib-basic-sdk.min.' + fileVersion + '.js', { newLine: ';' }))
.pipe(header.apply(null, config.comment))
.pipe(gulp.dest(web_dest))
.pipe(gzip({
append: true,
gzipOptions: {
level: 9,
memLevel: 9
}
}))
.pipe(gulp.dest(web_dest));
};
// lib-component-sdk.min.js
const web_component_js = () => {
return gulp.src([
'./web-res/js/component/*.js',
])
.pipe(babel())
.pipe(uglifyEs({
mangle: true,
compress: true,
output: {
ascii_only: true
},
}))
.pipe(replace(' ', ''))
.pipe(replace('\n', ''))
.pipe(replace(
new RegExp(Object.keys(replaceVarsMap).join('|'), 'g'),
function(matched) {
return replaceVarsMap[matched];
}
))
.pipe(concat('lib-component-sdk.min.' + fileVersion + '.js', { newLine: ' ' }))
.pipe(header.apply(null, config.comment))
.pipe(gulp.dest(web_dest))
.pipe(gzip({
append: true,
gzipOptions: {
level: 9,
memLevel: 9
}
}))
.pipe(gulp.dest(web_dest));
};
// lib-module-sdk.min.js
const web_module_js = () => {
return gulp.src([
// sidebar模块
'./web-res/js/module/sidebar/hovertips.js',
'./web-res/js/module/sidebar/logo.js',
'./web-res/js/module/sidebar/tool.js',
'./web-res/js/module/sidebar/bottom.js',
'./web-res/js/module/sidebar/sidebar.js',
// channel模块
'./web-res/js/module/channel/top.js',
'./web-res/js/module/channel/list.js',
'./web-res/js/module/channel/channel.js',
// channel-content模块
'./web-res/js/module/channel/content/search.js',
'./web-res/js/module/channel/content/body.js',
'./web-res/js/module/channel/content/more.js',
'./web-res/js/module/channel/content/invite.js',
'./web-res/js/module/channel/content/tool.js',
'./web-res/js/module/channel/content/textarea.js',
'./web-res/js/module/channel/content.js',
// login模块
'./web-res/js/module/login/mobile.js',
'./web-res/js/module/login/list.js',
'./web-res/js/module/login/login.js',
// login-content模块
'./web-res/js/module/login/content/account.js',
'./web-res/js/module/login/content/email.js',
'./web-res/js/module/login/content.js',
// contact模块
'./web-res/js/module/contact/list.js',
'./web-res/js/module/contact/top.js',
'./web-res/js/module/contact/contact.js',
// contact-content模块
'./web-res/js/module/contact/content/group.js',
'./web-res/js/module/contact/content/apply_user.js',
'./web-res/js/module/contact/content/apply_group.js',
'./web-res/js/module/contact/content/friend.js',
'./web-res/js/module/contact/content/search_user.js',
'./web-res/js/module/contact/content/search_group.js',
'./web-res/js/module/contact/content.js',
//setting模块
'./web-res/js/module/setting/list.js',
'./web-res/js/module/setting/setting.js',
//setting-content模块
'./web-res/js/module/setting/content/normal.js',
'./web-res/js/module/setting/content/account.js',
'./web-res/js/module/setting/content/message.js',
'./web-res/js/module/setting/content/skin.js',
'./web-res/js/module/setting/content/other.js',
'./web-res/js/module/setting/content.js',
//blank模块
'./web-res/js/module/blank/content.js',
//主模块
'./web-res/js/tl_rtc_app.js',
])
.pipe(babel())
.pipe(uglifyEs({
mangle: true,
compress: true,
output: {
ascii_only: true
},
}))
.pipe(replace(' ', ''))
.pipe(replace('\n', ''))
.pipe(replace(
new RegExp(Object.keys(replaceVarsMap).join('|'), 'g'),
function(matched) {
return replaceVarsMap[matched];
}
))
.pipe(concat('lib-module-sdk.min.' + fileVersion + '.js', { newLine: ' ' }))
.pipe(header.apply(null, config.comment))
.pipe(gulp.dest(web_dest))
.pipe(gzip({
append: true,
gzipOptions: {
level: 9,
memLevel: 9
}
}))
.pipe(gulp.dest(web_dest));
};
// lib-css-sdk.min.css
const web_css = () => {
return gulp.src([
// 基础
'./web-res/css/pc.css',
// 组件样式
'./web-res/css/*/*.css',
// 媒体查询样式
'./web-res/css/max.css',
'./web-res/css/ipad.css',
'./web-res/css/max-mobile.css',
'./web-res/css/mobile.css',
])
.pipe(cleanCSS())
.pipe(replace(
new RegExp(Object.keys(replaceVarsMap).join('|'), 'g'),
function(matched) {
return replaceVarsMap[matched];
}
))
.pipe(concat('lib-css-sdk.min.' + fileVersion + '.css', { newLine: '\n' }))
.pipe(header.apply(null, config.comment))
.pipe(gulp.dest(web_dest))
.pipe(gzip({
append: true,
gzipOptions: {
level: 9,
memLevel: 9
}
}))
.pipe(gulp.dest(web_dest));
};
// html
const web_html = () => {
return gulp.src([
'./web-res/*.html',
])
.pipe(replace(
new RegExp(Object.keys(replaceVarsMap).join('|'), 'g'),
function(matched) {
return replaceVarsMap[matched];
}
))
.pipe(replace(
'lib-entry-sdk.min.js', 'lib-entry-sdk.min.' + fileVersion + '.js'
))
.pipe(replace(
'lib-basic-sdk.min.js', 'lib-basic-sdk.min.' + fileVersion + '.js'
))
.pipe(replace(
'lib-component-sdk.min.js', 'lib-component-sdk.min.' + fileVersion + '.js'
))
.pipe(replace(
'lib-module-sdk.min.js', 'lib-module-sdk.min.' + fileVersion + '.js'
))
.pipe(replace(
'lib-css-sdk.min.css', 'lib-css-sdk.min.' + fileVersion + '.css'
))
.pipe(gulpHtmlmin({
collapseWhitespace: true,
removeComments: true,
}))
.pipe(gulp.dest(web_dest))
.pipe(gzip({
append: true,
gzipOptions: {
level: 9,
memLevel: 9
}
}))
.pipe(gulp.dest(web_dest));
};
// image
const web_image = () => {
return gulp.src([
'./web-res/image/*.{eot,svg,ttf,woff,woff2,png,jpg,gif,jpeg,mp3}',
])
.pipe(gulp.dest(web_dest + '/image'))
.pipe(gzip({
append: true,
gzipOptions: {
level: 9,
memLevel: 9
}
}))
.pipe(gulp.dest(web_dest + '/image'))
};
// statics
const web_statics = () => {
return gulp.src([
'./web-res/static/**/*.*',
])
.pipe(replace(
new RegExp(Object.keys(replaceVarsMap).join('|'), 'g'),
function(matched) {
return replaceVarsMap[matched];
}
))
.pipe(gulp.dest(web_dest + '/static'))
.pipe(gzip({
append: true,
gzipOptions: {
level: 9,
memLevel: 9
}
}))
.pipe(gulp.dest(web_dest + '/static'))
};
/**********************************************以上为产品端前端资源*************************************************/
// lib-css-sdk.min.css
const system_web_css = () => {
return gulp.src([
// 基础
'./web-res/css/pc.css',
// 组件样式
'./web-res/css/*/*.css',
// 媒体查询样式
'./web-res/css/max.css',
'./web-res/css/ipad.css',
'./web-res/css/max-mobile.css',
'./web-res/css/mobile.css',
])
.pipe(cleanCSS())
.pipe(replace(
new RegExp(Object.keys(replaceVarsMap).join('|'), 'g'),
function(matched) {
return replaceVarsMap[matched];
}
))
.pipe(concat('lib-css-sdk.min.' + fileVersion + '.css', { newLine: '\n' }))
.pipe(header.apply(null, config.comment))
.pipe(gulp.dest(system_dest))
.pipe(gzip({
append: true,
gzipOptions: {
level: 9,
memLevel: 9
}
}))
.pipe(gulp.dest(system_dest));
};
// lib-basic-sdk.min.js
const system_web_basic_js = () => {
return gulp.src([
'./web-res/js/basic/*.js',
])
.pipe(babel())
.pipe(uglifyEs({
mangle: true,
compress: true,
output: {
ascii_only: true
},
}))
.pipe(replace(' ', ''))
.pipe(replace('\n', ''))
.pipe(replace(
new RegExp(Object.keys(replaceVarsMap).join('|'), 'g'),
function(matched) {
return replaceVarsMap[matched];
}
))
.pipe(concat('lib-basic-sdk.min.' + fileVersion + '.js', { newLine: ';' }))
.pipe(header.apply(null, config.comment))
.pipe(gulp.dest(system_dest))
.pipe(gzip({
append: true,
gzipOptions: {
level: 9,
memLevel: 9
}
}))
.pipe(gulp.dest(system_dest));
};
// lib-component-sdk.min.js
const system_web_component_js = () => {
return gulp.src([
'./web-res/js/component/*.js',
])
.pipe(babel())
.pipe(uglifyEs({
mangle: true,
compress: true,
output: {
ascii_only: true
},
}))
.pipe(replace(' ', ''))
.pipe(replace('\n', ''))
.pipe(replace(
new RegExp(Object.keys(replaceVarsMap).join('|'), 'g'),
function(matched) {
return replaceVarsMap[matched];
}
))
.pipe(concat('lib-component-sdk.min.' + fileVersion + '.js', { newLine: ' ' }))
.pipe(header.apply(null, config.comment))
.pipe(gulp.dest(system_dest))
.pipe(gzip({
append: true,
gzipOptions: {
level: 9,
memLevel: 9
}
}))
.pipe(gulp.dest(system_dest));
};
// lib-system-sdk.min.js
const system_js = () => {
return gulp.src([
'./system-res/js/*.js',
'./system-res/js/component/*.js',
])
.pipe(babel())
.pipe(uglifyEs({
mangle: true,
compress: true,
output: {
ascii_only: true
},
}))
.pipe(replace(' ', ''))
.pipe(replace('\n', ''))
.pipe(replace(
new RegExp(Object.keys(replaceVarsMap).join('|'), 'g'),
function(matched) {
return replaceVarsMap[matched];
}
))
.pipe(replace(
'lib-basic-sdk.min.js', 'lib-basic-sdk.min.' + fileVersion + '.js'
))
.pipe(replace(
'lib-component-sdk.min.js', 'lib-component-sdk.min.' + fileVersion + '.js'
))
.pipe(concat('lib-system-sdk.min.' + fileVersion + ".js", { newLine: ';' }))
.pipe(header.apply(null, config.comment))
.pipe(gulp.dest(system_dest))
.pipe(gzip({
append: true,
gzipOptions: {
level: 9,
memLevel: 9
}
}))
.pipe(gulp.dest(system_dest));
};
// lib-system-sdk.min.css
const system_css = () => {
return gulp.src([
'./system-res/css/*.css',
'./system-res/css/component/*.css',
])
.pipe(cleanCSS())
.pipe(replace(
new RegExp(Object.keys(replaceVarsMap).join('|'), 'g'),
function(matched) {
return replaceVarsMap[matched];
}
))
.pipe(concat('lib-system-sdk.min.' + fileVersion + '.css', { newLine: '\n' }))
.pipe(header.apply(null, config.comment))
.pipe(gulp.dest(system_dest))
.pipe(gzip({
append: true,
gzipOptions: {
level: 9,
memLevel: 9
}
}))
.pipe(gulp.dest(system_dest));
};
// system html
const system_html = () => {
return gulp.src([
'./system-res/system.html',
])
.pipe(replace(
new RegExp(Object.keys(replaceVarsMap).join('|'), 'g'),
function(matched) {
return replaceVarsMap[matched];
}
))
.pipe(replace(
'lib-system-sdk.min.js', 'lib-system-sdk.min.' + fileVersion + '.js'
))
.pipe(replace(
'lib-system-sdk.min.css', 'lib-system-sdk.min.' + fileVersion + '.css'
))
.pipe(replace(
'lib-css-sdk.min.css', 'lib-css-sdk.min.' + fileVersion + '.css'
))
.pipe(gulpHtmlmin({
collapseWhitespace: true,
removeComments: true,
}))
.pipe(gulp.dest(system_dest))
.pipe(gzip({
append: true,
gzipOptions: {
level: 9,
memLevel: 9
}
}))
.pipe(gulp.dest(system_dest));
};
// system image
const system_image = () => {
return gulp.src([
'./system-res/image/*.{eot,svg,ttf,woff,woff2,png,jpg,gif,jpeg,mp3}',
])
.pipe(gulp.dest(system_dest + '/image'))
.pipe(gzip({
append: true,
gzipOptions: {
level: 9,
memLevel: 9
}
}))
.pipe(gulp.dest(system_dest + '/image'))
};
// system statics
const system_statics = () => {
return gulp.src([
'./system-res/static/**/*.*',
])
.pipe(replace(
new RegExp(Object.keys(replaceVarsMap).join('|'), 'g'),
function(matched) {
return replaceVarsMap[matched];
}
))
.pipe(gulp.dest(system_dest + '/static'))
.pipe(gzip({
append: true,
gzipOptions: {
level: 9,
memLevel: 9
}
}))
.pipe(gulp.dest(system_dest + '/static'))
};
/**********************************************以上为管理端前端资源*************************************************/
const cleanWeb = cb => {
return del([web_dest], {
force: true
});
};
const cleanSystem = cb => {
return del([system_dest], {
force: true
});
}
// 产品端
const webTask = gulp.series(cleanWeb, gulp.parallel(
web_css, web_html, web_image, web_statics,
web_basic_js, web_component_js, web_entry_js, web_module_js,
));
// 管理端
const systemTask = gulp.series(cleanSystem, gulp.parallel(
// 引入产品端资源
system_web_css, system_web_basic_js, system_web_component_js,
system_image, system_statics, system_html, system_css, system_js,
));
// 监听任务
exports.watch = () => {
// 产品端监听
gulp.watch('./web-res/**', webTask);
// 管理端监听
gulp.watch('./system-res/**', systemTask);
};
// 导出任务
exports.web = webTask;
exports.system = systemTask;
// 默认任务
exports.default = gulp.parallel(webTask, systemTask);
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/tl-open-source/tl-rtc-app.git
git@gitee.com:tl-open-source/tl-rtc-app.git
tl-open-source
tl-rtc-app
tl-rtc-app
main

搜索帮助