Merge branch 'cocos-main'
# Conflicts: # docker-conf/conf.d/nginx.conf # nginx.conf # scratch-blocks/build.py # scratch-blocks/cleanup.sh # scratch-blocks/i18n/create_messages.py # scratch-blocks/i18n/dedup_json.py # scratch-blocks/i18n/js_to_json.py # scratch-blocks/i18n/json_to_js.py # scratch-blocks/i18n/sync_tx_translations.js # scratch-blocks/i18n/xliff_to_json.py # scratch-blocks/local_build.sh # scratch-blocks/media/icons/control_forever.svg # scratch-blocks/media/icons/control_repeat.svg # scratch-blocks/media/icons/control_wait.svg # scratch-blocks/media/icons/event_broadcast_blue.svg # scratch-blocks/media/icons/event_broadcast_coral.svg # scratch-blocks/media/icons/event_broadcast_green.svg # scratch-blocks/media/icons/event_broadcast_magenta.svg # scratch-blocks/media/icons/event_broadcast_orange.svg # scratch-blocks/media/icons/event_broadcast_purple.svg # scratch-blocks/media/icons/event_when-broadcast-received_blue.svg # scratch-blocks/media/icons/event_when-broadcast-received_coral.svg # scratch-blocks/media/icons/event_when-broadcast-received_green.svg # scratch-blocks/media/icons/event_when-broadcast-received_magenta.svg # scratch-blocks/media/icons/event_when-broadcast-received_orange.svg # scratch-blocks/media/icons/event_when-broadcast-received_purple.svg # scratch-blocks/media/icons/event_whenflagclicked.svg # scratch-blocks/media/icons/set-led_blue.svg # scratch-blocks/media/icons/set-led_coral.svg # scratch-blocks/media/icons/set-led_green.svg # scratch-blocks/media/icons/set-led_magenta.svg # scratch-blocks/media/icons/set-led_mystery.svg # scratch-blocks/media/icons/set-led_orange.svg # scratch-blocks/media/icons/set-led_purple.svg # scratch-blocks/media/icons/set-led_white.svg # scratch-blocks/media/icons/set-led_yellow.svg # scratch-blocks/media/icons/wedo_motor-clockwise.svg # scratch-blocks/media/icons/wedo_motor-counterclockwise.svg # scratch-blocks/media/icons/wedo_when-distance_close.svg # scratch-blocks/media/icons/wedo_when-tilt-backward.svg # scratch-blocks/media/icons/wedo_when-tilt-forward.svg # scratch-blocks/media/icons/wedo_when-tilt-left.svg # scratch-blocks/media/icons/wedo_when-tilt-right.svg # scratch-blocks/media/icons/wedo_when-tilt.svg # scratch-blocks/package-lock.json # scratch-blocks/pull_from_blockly.sh # scratch-gui/competitio_login/index.html # scratch-gui/package-lock.json # scratch-gui/package.json # scratch-gui/prune-gh-pages.sh # scratch-gui/src/components/menu-bar/menu-bar.css # scratch-gui/src/components/menu-bar/menu-bar.jsx # scratch-gui/src/components/nopermission-modal/NoPermissionModal.jsx # scratch-gui/src/components/stage-cpp-unity/currentLevelChoose.jsx # scratch-gui/src/components/stage-cpp-unity/stage-unity.jsx # scratch-gui/src/components/stage-cpp/cpp-parser.js # scratch-gui/src/components/stage-cpp/stage-cpp-clang.jsx # scratch-gui/src/components/stage-cpp/stage-cpp.css # scratch-gui/src/components/stage-python-unity/currentLevelChoose.jsx # scratch-gui/src/components/stage-python-unity/stage-unity.jsx # scratch-gui/src/components/stage-python/stage-python.css # scratch-gui/src/components/stage-python/stage-python.jsx # scratch-gui/src/components/stage-unity/currentLevelChoose.jsx # scratch-gui/src/components/stage-unity/stage-unity.jsx # scratch-gui/src/lib/libraries/decks/steps/add-effects.es.png # scratch-gui/src/lib/libraries/decks/steps/animate-char-add-sound.es.png # scratch-gui/src/lib/libraries/decks/steps/animate-char-change-color.es.png # scratch-gui/src/lib/libraries/decks/steps/animate-char-jump.es.png # scratch-gui/src/lib/libraries/decks/steps/animate-char-move.es.png # scratch-gui/src/lib/libraries/decks/steps/animate-char-say-something.es.png # scratch-gui/src/lib/libraries/decks/steps/animate-char-talk.es.png # scratch-gui/src/lib/libraries/decks/steps/change-size.es.png # scratch-gui/src/lib/libraries/decks/steps/chase-game-change-score.es.png # scratch-gui/src/lib/libraries/decks/steps/chase-game-move-randomly.es.png # scratch-gui/src/lib/libraries/decks/steps/chase-game-play-sound.es.png # scratch-gui/src/lib/libraries/decks/steps/chase-game-right-left.es.png # scratch-gui/src/lib/libraries/decks/steps/chase-game-up-down.es.png # scratch-gui/src/lib/libraries/decks/steps/cn-backdrop.es.png # scratch-gui/src/lib/libraries/decks/steps/cn-collect.es.png # scratch-gui/src/lib/libraries/decks/steps/cn-glide.es.png # scratch-gui/src/lib/libraries/decks/steps/cn-say.es.png # scratch-gui/src/lib/libraries/decks/steps/cn-score.es.png # scratch-gui/src/lib/libraries/decks/steps/code-cartoon-01-say-something.es.png # scratch-gui/src/lib/libraries/decks/steps/code-cartoon-02-animate.es.png # scratch-gui/src/lib/libraries/decks/steps/code-cartoon-03-select-different-character.LTR.png # scratch-gui/src/lib/libraries/decks/steps/code-cartoon-04-use-minus-sign.es.png # scratch-gui/src/lib/libraries/decks/steps/code-cartoon-05-grow-shrink.es.png # scratch-gui/src/lib/libraries/decks/steps/code-cartoon-06-select-another-different-character.LTR.png # scratch-gui/src/lib/libraries/decks/steps/code-cartoon-07-jump.es.png # scratch-gui/src/lib/libraries/decks/steps/code-cartoon-08-change-scenes.es.png # scratch-gui/src/lib/libraries/decks/steps/code-cartoon-09-glide-around.es.png # scratch-gui/src/lib/libraries/decks/steps/code-cartoon-10-change-costumes.es.png # scratch-gui/src/lib/libraries/decks/steps/code-cartoon-11-choose-more-characters.LTR.png # scratch-gui/src/lib/libraries/decks/steps/fly-choose-character.LTR.png # scratch-gui/src/lib/libraries/decks/steps/fly-flying-heart.es.png # scratch-gui/src/lib/libraries/decks/steps/fly-keep-score.es.png # scratch-gui/src/lib/libraries/decks/steps/fly-make-interactive.es.png # scratch-gui/src/lib/libraries/decks/steps/fly-move-scenery.es.png # scratch-gui/src/lib/libraries/decks/steps/fly-object-to-collect.LTR.png # scratch-gui/src/lib/libraries/decks/steps/fly-say-something.es.png # scratch-gui/src/lib/libraries/decks/steps/fly-select-flyer.LTR.png # scratch-gui/src/lib/libraries/decks/steps/fly-switch-costume.es.png # scratch-gui/src/lib/libraries/decks/steps/glide-around-back-and-forth.es.png # scratch-gui/src/lib/libraries/decks/steps/glide-around-point.es.png # scratch-gui/src/lib/libraries/decks/steps/hide-show.es.png # scratch-gui/src/lib/libraries/decks/steps/imagine-change-costumes.es.png # scratch-gui/src/lib/libraries/decks/steps/imagine-choose-another-backdrop.LTR.png # scratch-gui/src/lib/libraries/decks/steps/imagine-choose-another-sprite.LTR.png # scratch-gui/src/lib/libraries/decks/steps/imagine-choose-any-sprite.LTR.png # scratch-gui/src/lib/libraries/decks/steps/imagine-choose-backdrop.LTR.png # scratch-gui/src/lib/libraries/decks/steps/imagine-choose-sound.es.png # scratch-gui/src/lib/libraries/decks/steps/imagine-click-green-flag.es.png # scratch-gui/src/lib/libraries/decks/steps/imagine-fly-around.es.png # scratch-gui/src/lib/libraries/decks/steps/imagine-glide-to-point.es.png # scratch-gui/src/lib/libraries/decks/steps/imagine-grow-shrink.es.png # scratch-gui/src/lib/libraries/decks/steps/imagine-left-right.es.png # scratch-gui/src/lib/libraries/decks/steps/imagine-type-what-you-want.es.png # scratch-gui/src/lib/libraries/decks/steps/imagine-up-down.es.png # scratch-gui/src/lib/libraries/decks/steps/move-arrow-keys-left-right.es.png # scratch-gui/src/lib/libraries/decks/steps/move-arrow-keys-up-down.es.png # scratch-gui/src/lib/libraries/decks/steps/music-make-beat.es.png # scratch-gui/src/lib/libraries/decks/steps/music-make-beatbox.es.png # scratch-gui/src/lib/libraries/decks/steps/music-make-song.es.png # scratch-gui/src/lib/libraries/decks/steps/music-play-sound.es.png # scratch-gui/src/lib/libraries/decks/steps/name-change-color.es.png # scratch-gui/src/lib/libraries/decks/steps/name-grow.es.png # scratch-gui/src/lib/libraries/decks/steps/name-play-sound.es.png # scratch-gui/src/lib/libraries/decks/steps/name-spin.es.png # scratch-gui/src/lib/libraries/decks/steps/pong-add-backdrop.LTR.png # scratch-gui/src/lib/libraries/decks/steps/pong-add-ball-sprite.LTR.png # scratch-gui/src/lib/libraries/decks/steps/pong-add-code-to-ball.es.png # scratch-gui/src/lib/libraries/decks/steps/pong-bounce-around.es.png # scratch-gui/src/lib/libraries/decks/steps/pong-choose-score.es.png # scratch-gui/src/lib/libraries/decks/steps/pong-game-over.es.png # scratch-gui/src/lib/libraries/decks/steps/pong-insert-change-score.es.png # scratch-gui/src/lib/libraries/decks/steps/pong-move-the-paddle.es.png # scratch-gui/src/lib/libraries/decks/steps/pong-reset-score.es.png # scratch-gui/src/lib/libraries/decks/steps/pong-select-ball.LTR.png # scratch-gui/src/lib/libraries/decks/steps/pop-game-change-color.es.png # scratch-gui/src/lib/libraries/decks/steps/pop-game-change-score.es.png # scratch-gui/src/lib/libraries/decks/steps/pop-game-play-sound.es.png # scratch-gui/src/lib/libraries/decks/steps/pop-game-random-position.es.png # scratch-gui/src/lib/libraries/decks/steps/pop-game-reset-score.es.png # scratch-gui/src/lib/libraries/decks/steps/record-a-sound-choose-sound.es.png # scratch-gui/src/lib/libraries/decks/steps/record-a-sound-click-record.es.png # scratch-gui/src/lib/libraries/decks/steps/record-a-sound-play-your-sound.es.png # scratch-gui/src/lib/libraries/decks/steps/record-a-sound-press-record-button.es.png # scratch-gui/src/lib/libraries/decks/steps/record-a-sound-sounds-tab.es.png # scratch-gui/src/lib/libraries/decks/steps/speech-change-color.es.png # scratch-gui/src/lib/libraries/decks/steps/speech-grow-shrink.es.png # scratch-gui/src/lib/libraries/decks/steps/speech-move-around.es.png # scratch-gui/src/lib/libraries/decks/steps/speech-say-something.es.png # scratch-gui/src/lib/libraries/decks/steps/speech-set-voice.es.png # scratch-gui/src/lib/libraries/decks/steps/speech-song.es.png # scratch-gui/src/lib/libraries/decks/steps/speech-spin.es.png # scratch-gui/src/lib/libraries/decks/steps/spin-point-in-direction.es.png # scratch-gui/src/lib/libraries/decks/steps/spin-turn.es.png # scratch-gui/src/lib/libraries/decks/steps/story-conversation.es.png # scratch-gui/src/lib/libraries/decks/steps/story-hide-character.es.png # scratch-gui/src/lib/libraries/decks/steps/story-say-something.es.png # scratch-gui/src/lib/libraries/decks/steps/story-show-character.es.png # scratch-gui/src/lib/libraries/decks/steps/story-switch-backdrop.es.png # scratch-gui/src/lib/libraries/decks/steps/switch-costumes.es.png # scratch-gui/src/lib/libraries/decks/steps/talking-10-choose-third-backdrop.LTR.png # scratch-gui/src/lib/libraries/decks/steps/talking-12-dance-moves.es.png # scratch-gui/src/lib/libraries/decks/steps/talking-2-choose-sprite.LTR.png # scratch-gui/src/lib/libraries/decks/steps/talking-4-choose-backdrop.LTR.png # scratch-gui/src/lib/libraries/decks/steps/talking-6-choose-another-sprite.LTR.png # scratch-gui/src/lib/libraries/decks/steps/talking-7-move-around.es.png # scratch-gui/src/lib/libraries/decks/steps/talking-8-choose-another-backdrop.LTR.png # scratch-gui/src/lib/libraries/decks/steps/video-animate.es.png # scratch-gui/src/lib/libraries/decks/steps/video-pet.es.png # scratch-gui/src/lib/libraries/decks/steps/video-pop.es.png # scratch-gui/src/playground/aboutus.ejs # scratch-gui/src/playground/checkStatus.js # scratch-gui/src/playground/competition.ejs # scratch-gui/src/playground/competition.js # scratch-gui/src/playground/competition_list.ejs # scratch-gui/src/playground/competition_list.js # scratch-gui/src/playground/competition_sum.ejs # scratch-gui/src/playground/competition_sum.js # scratch-gui/src/playground/config.js # scratch-gui/src/playground/home.ejs # scratch-gui/src/playground/import-check.js # scratch-gui/src/playground/leaderboard.ejs # scratch-gui/src/playground/login-new.ejs # scratch-gui/src/playground/login.ejs # scratch-gui/src/playground/login.js # scratch-gui/src/playground/matchsum.js # scratch-gui/src/playground/programming-learning.ejs # scratch-gui/src/playground/programming-learning.js # scratch-gui/src/playground/signup-new.ejs # scratch-gui/src/playground/third-part-login.js # scratch-gui/src/playground/welcome.ejs # scratch-gui/src/playground/welcome.js # scratch-gui/static/css/welcome-new.css # scratch-gui/static/pyodide/pyodide.asm.wasm.br # scratch-gui/static/unity/Build/mstest5.data.br # scratch-gui/static/unity/Build/mstest5.framework.js.br # scratch-gui/static/unity/Build/mstest5.loader.js # scratch-gui/static/unity/Build/mstest5.wasm.br # scratch-gui/static/unity/StreamingAssets/aa/AddressablesLink/link.xml # scratch-gui/static/unity/StreamingAssets/aa/catalog.json # scratch-gui/static/unity/StreamingAssets/aa/settings.json # scratch-gui/webpack.config.js # scratch-l10n/scripts/build-data.js # scratch-l10n/scripts/build-i18n-src.js # scratch-l10n/scripts/tw-push.js # scratch-l10n/scripts/tx-pull-help-articles.js # scratch-l10n/scripts/tx-pull-help-names.js # scratch-l10n/scripts/tx-pull-locale-articles.js # scratch-l10n/scripts/tx-pull-www.js # scratch-l10n/scripts/tx-push-help.js # scratch-l10n/scripts/tx-push-src.js # scratch-l10n/scripts/update-translations.sh # scratch-l10n/scripts/validate-www.js # scratch-vm/package-lock.json # scratch-vm/src/extensions/scratch3_music/assets/instruments/11-saxophone/36.mp3 # scratch-vm/src/extensions/scratch3_music/assets/instruments/11-saxophone/60.mp3 # scratch-vm/src/extensions/scratch3_music/assets/instruments/11-saxophone/84.mp3 # scratch-vm/src/extensions/scratch3_music/assets/instruments/5-electric-guitar/60.mp3 # scratch-vm/test/fixtures/sprite.json
This commit is contained in:
@@ -28,12 +28,29 @@ if (root.length > 0 && !root.endsWith('/')) {
|
||||
throw new Error('If ROOT is defined, it must have a trailing slash.');
|
||||
}
|
||||
|
||||
function readConfigQuotedValue(key, fallback) {
|
||||
const src = fs.readFileSync(path.join(__dirname, 'src/playground/config.js'), 'utf8');
|
||||
let value = fallback;
|
||||
src.split(/\r?\n/).forEach((line) => {
|
||||
const trimmed = line.trim();
|
||||
if (trimmed.startsWith('//')) return;
|
||||
const match = trimmed.match(new RegExp(key + '\\s*:\\s*["\']([^"\']+)["\']'));
|
||||
if (match) value = match[1];
|
||||
});
|
||||
return value;
|
||||
}
|
||||
|
||||
const DATA_SERVER_BASE_URL = readConfigQuotedValue('DataServerBaseUrl', 'https://test-service.001code.cn');
|
||||
const AI_COURSE_OSS_BASE = readConfigQuotedValue('aiCourseOssBase', 'https://oss.001code.cn/ai_courses');
|
||||
console.log('[webpack] DataServerBaseUrl =', DATA_SERVER_BASE_URL);
|
||||
const version = "2025071401";
|
||||
const htmlWebpackPluginCommon = {
|
||||
root: root,
|
||||
meta: JSON.parse(process.env.EXTRA_META || '{}'),
|
||||
APP_NAME,
|
||||
version: version, // 使用时间戳作为版本号
|
||||
dataServerBaseUrl: DATA_SERVER_BASE_URL,
|
||||
aiCourseOssBase: AI_COURSE_OSS_BASE,
|
||||
minify: process.env.NODE_ENV === 'production' ? {
|
||||
collapseWhitespace: true,
|
||||
removeComments: true,
|
||||
@@ -85,6 +102,16 @@ const base = {
|
||||
{ from: /^\/competition-groups\/?$/, to: '/competition-groups.html' },
|
||||
{ from: /^\/sichuan-chongqing-competition\/?$/, to: '/sichuan-chongqing-competition.html' },
|
||||
{ from: /^\/aboutus\/?$/, to: '/aboutus.html' },
|
||||
{ from: /^\/ai\/?$/, to: '/ai.html' },
|
||||
{ from: /^\/coming-soon\/?$/, to: '/coming-soon.html' },
|
||||
{ from: /^\/ai-text\/?$/, to: '/ai-text.html' },
|
||||
{ from: /^\/ai-draw\/?$/, to: '/ai-draw.html' },
|
||||
{ from: /^\/ai-huiben\/?$/, to: '/ai-huiben.html' },
|
||||
{ from: /^\/ai-voice\/?$/, to: '/ai-voice.html' },
|
||||
{ from: /^\/ai-video\/?$/, to: '/ai-video.html' },
|
||||
{ from: /^\/ai-music\/?$/, to: '/ai-music.html' },
|
||||
{ from: /^\/works-plaza\/?$/, to: '/works-plaza.html' },
|
||||
{ from: /^\/course-detail\/?$/, to: '/course-detail.html' },
|
||||
{ from: /^\/home\/?$/, to: '/home.html' },
|
||||
{ from: /^\/home-laoshan\/?$/, to: '/competition-scssn-laoshan.html' }, //崂山赛事定制
|
||||
{ from: /^\/aicoding-groups-laoshan\/?$/, to: '/competition-groups-laoshan.html' },
|
||||
@@ -257,14 +284,17 @@ module.exports = [
|
||||
'signup': '/src/playground/signup.js',
|
||||
'matchsum': ['./src/playground/checkStatus.js', '/src/playground/matchsum.js', './src/playground/auth.js'],
|
||||
'app-target': './src/playground/app-target.js', // 确保全局入口文件被包含
|
||||
'welcome': ['./src/playground/checkStatus.js', './src/playground/welcome.js', './src/playground/auth.js'],
|
||||
'welcome': ['./src/playground/welcome.js', './src/playground/auth.js'],
|
||||
'programming-learning': ['./src/playground/checkStatus.js', './src/playground/programming-learning.js', './src/playground/auth.js'],
|
||||
'competition_sum': ['./src/playground/checkcompetitionStatus.js', './src/playground/competition_sum.js', './src/playground/auth.js'],
|
||||
'competition': ['./src/playground/competition.js'],
|
||||
'competition_list': ['./src/playground/competition_list.js'],
|
||||
// 'onegame': ['./src/playground/import-check.js', './src/playground/onegame.js']
|
||||
'third-part-login': ['./src/playground/third-part-login.js'],
|
||||
'leaderboard': './src/playground/leaderboard.js'
|
||||
'leaderboard': './src/playground/leaderboard.js',
|
||||
'home': './src/playground/home.js',
|
||||
// AI 静态页与 login 共用 config.js,避免只烘焙启动时的旧地址
|
||||
'aiConfig': './src/playground/ai-config.js'
|
||||
},
|
||||
output: {
|
||||
path: path.resolve(__dirname, 'build')
|
||||
@@ -372,6 +402,25 @@ module.exports = [
|
||||
'process.env.ROOT': JSON.stringify(root),
|
||||
'process.env.ROUTING_STYLE': JSON.stringify(process.env.ROUTING_STYLE || 'filehash')
|
||||
}),
|
||||
{
|
||||
apply: function (compiler) {
|
||||
compiler.hooks.compilation.tap('SyncDataServerBaseUrl', function (compilation) {
|
||||
var hooks = HtmlWebpackPlugin.getHooks && HtmlWebpackPlugin.getHooks(compilation);
|
||||
if (!hooks || !hooks.beforeHtmlGeneration) return;
|
||||
hooks.beforeHtmlGeneration.tap('SyncDataServerBaseUrl', function (data) {
|
||||
data.plugin.options.dataServerBaseUrl = readConfigQuotedValue(
|
||||
'DataServerBaseUrl',
|
||||
data.plugin.options.dataServerBaseUrl || DATA_SERVER_BASE_URL
|
||||
);
|
||||
data.plugin.options.aiCourseOssBase = readConfigQuotedValue(
|
||||
'aiCourseOssBase',
|
||||
data.plugin.options.aiCourseOssBase || AI_COURSE_OSS_BASE
|
||||
);
|
||||
return data;
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
new HtmlWebpackPlugin({
|
||||
chunks: ['editor'],
|
||||
template: 'src/playground/index.ejs',
|
||||
@@ -448,6 +497,14 @@ module.exports = [
|
||||
}
|
||||
]
|
||||
}),
|
||||
new CopyWebpackPlugin({
|
||||
patterns: [
|
||||
{
|
||||
from: 'static',
|
||||
to: ''
|
||||
}
|
||||
]
|
||||
}),
|
||||
new HtmlWebpackPlugin({
|
||||
chunks: ['login'],
|
||||
template: 'src/playground/login-new.ejs', // 新创建的 EJS 文件
|
||||
@@ -594,7 +651,7 @@ module.exports = [
|
||||
...htmlWebpackPluginCommon
|
||||
}),
|
||||
new HtmlWebpackPlugin({
|
||||
chunks: ['import-check', 'welcome'],
|
||||
chunks: ['welcome'],
|
||||
template: 'src/playground/welcome.ejs',
|
||||
filename: 'welcome.html',
|
||||
title: `Welcome - ${APP_NAME}`,
|
||||
@@ -622,7 +679,97 @@ module.exports = [
|
||||
...htmlWebpackPluginCommon
|
||||
}),
|
||||
new HtmlWebpackPlugin({
|
||||
chunks: ['import-check', 'home'],
|
||||
chunks: ['aiConfig'],
|
||||
inject: 'head',
|
||||
scriptLoading: 'blocking',
|
||||
template: 'src/playground/ai.ejs',
|
||||
filename: 'ai.html',
|
||||
title: `灵丌AI - ${APP_NAME}`,
|
||||
...htmlWebpackPluginCommon
|
||||
}),
|
||||
new HtmlWebpackPlugin({
|
||||
chunks: ['aiConfig'],
|
||||
inject: 'head',
|
||||
scriptLoading: 'blocking',
|
||||
template: 'src/playground/course-detail.ejs',
|
||||
filename: 'course-detail.html',
|
||||
title: `课程详情 - ${APP_NAME}`,
|
||||
...htmlWebpackPluginCommon
|
||||
}),
|
||||
new HtmlWebpackPlugin({
|
||||
chunks: ['aiConfig'],
|
||||
inject: 'head',
|
||||
scriptLoading: 'blocking',
|
||||
template: 'src/playground/coming-soon.ejs',
|
||||
filename: 'coming-soon.html',
|
||||
title: `即将上线 - ${APP_NAME}`,
|
||||
...htmlWebpackPluginCommon
|
||||
}),
|
||||
new HtmlWebpackPlugin({
|
||||
chunks: ['aiConfig'],
|
||||
inject: 'head',
|
||||
scriptLoading: 'blocking',
|
||||
template: 'src/playground/ai-text.ejs',
|
||||
filename: 'ai-text.html',
|
||||
title: `AI文本 - ${APP_NAME}`,
|
||||
...htmlWebpackPluginCommon
|
||||
}),
|
||||
new HtmlWebpackPlugin({
|
||||
chunks: ['aiConfig'],
|
||||
inject: 'head',
|
||||
scriptLoading: 'blocking',
|
||||
template: 'src/playground/ai-draw.ejs',
|
||||
filename: 'ai-draw.html',
|
||||
title: `AI绘图 - ${APP_NAME}`,
|
||||
...htmlWebpackPluginCommon
|
||||
}),
|
||||
new HtmlWebpackPlugin({
|
||||
chunks: ['aiConfig'],
|
||||
inject: 'head',
|
||||
scriptLoading: 'blocking',
|
||||
template: 'src/playground/ai-huiben.ejs',
|
||||
filename: 'ai-huiben.html',
|
||||
title: `AI绘本 - ${APP_NAME}`,
|
||||
...htmlWebpackPluginCommon
|
||||
}),
|
||||
new HtmlWebpackPlugin({
|
||||
chunks: ['aiConfig'],
|
||||
inject: 'head',
|
||||
scriptLoading: 'blocking',
|
||||
template: 'src/playground/ai-voice.ejs',
|
||||
filename: 'ai-voice.html',
|
||||
title: `AI语音 - ${APP_NAME}`,
|
||||
...htmlWebpackPluginCommon
|
||||
}),
|
||||
new HtmlWebpackPlugin({
|
||||
chunks: ['aiConfig'],
|
||||
inject: 'head',
|
||||
scriptLoading: 'blocking',
|
||||
template: 'src/playground/ai-video.ejs',
|
||||
filename: 'ai-video.html',
|
||||
title: `AI视频 - ${APP_NAME}`,
|
||||
...htmlWebpackPluginCommon
|
||||
}),
|
||||
new HtmlWebpackPlugin({
|
||||
chunks: ['aiConfig'],
|
||||
inject: 'head',
|
||||
scriptLoading: 'blocking',
|
||||
template: 'src/playground/ai-music.ejs',
|
||||
filename: 'ai-music.html',
|
||||
title: `AI音乐 - ${APP_NAME}`,
|
||||
...htmlWebpackPluginCommon
|
||||
}),
|
||||
new HtmlWebpackPlugin({
|
||||
chunks: ['aiConfig'],
|
||||
inject: 'head',
|
||||
scriptLoading: 'blocking',
|
||||
template: 'src/playground/works-plaza.ejs',
|
||||
filename: 'works-plaza.html',
|
||||
title: `作品广场 - ${APP_NAME}`,
|
||||
...htmlWebpackPluginCommon
|
||||
}),
|
||||
new HtmlWebpackPlugin({
|
||||
chunks: ['home'],
|
||||
template: 'src/playground/home.ejs',
|
||||
filename: 'home.html',
|
||||
title: `home - ${APP_NAME}`,
|
||||
|
||||
Reference in New Issue
Block a user