Explorar el Código

🤓前端与官方仓库同步升级至v2.4.3

zuohuaijun hace 3 años
padre
commit
2c762e21ad

+ 2 - 2
Web/.env.development

@@ -1,5 +1,5 @@
 # 本地环境
-ENV = 'development'
+ENV = development
 
 # 本地环境接口地址
-VITE_API_URL = 'http://localhost:5005'
+VITE_API_URL = http://localhost:5005

+ 2 - 2
Web/.env.production

@@ -1,5 +1,5 @@
 # 线上环境
-ENV = 'production'
+ENV = production
 
 # 线上环境接口地址
-VITE_API_URL = ''
+VITE_API_URL =

+ 16 - 0
Web/CHANGELOG.md

@@ -2,6 +2,22 @@
 
 🎉🎉🔥 `vue-next-admin` 基于 vue3.x 、Typescript、vite、Element plus 等,适配手机、平板、pc 的后台开源免费模板库(vue2.x 请切换 vue-prev-admin 分支)
 
+## 2.4.3
+
+`2023.02.22`
+
+🚩🚩🚩 感谢 [驰骋工作流引擎-表单引擎-低代码开发平台](http://www.ccflow.org/) 赞助商的赞助。驰骋公司为社会提供流程引擎+表单引擎+低代码开发平台一体的开源软件解决方案,欢迎广大开发者前去体验!
+
+- 🌟 更新 依赖更新最新版本
+- 🎉 新增 赞助商组件(`/src/layout/sponsors`),[项目目录结构查看](https://lyt-top.gitee.io/vue-next-admin-doc-preview/config/)
+- 🐞 修复 [过滤筛选组件展开点击不了](https://gitee.com/lyt-top/vue-next-admin/issues/I688WG)
+- 🐞 修复 [设置锁屏时间时直接白屏了不能恢复,除非删除主题配置才会重新加载](https://gitee.com/lyt-top/vue-next-admin/issues/I6AF8P),感谢[@baizunxian](https://gitee.com/xb_xiaobai)
+- 🐞 修复 `分栏布局` 地址栏输入不存在的路由报错问题
+- 🎨 合并 [!44 tagsViewName 正则匹配错误,匹配到含 en 单词](https://gitee.com/lyt-top/vue-next-admin/pulls/44/files),感谢[@tony 星](https://gitee.com/tony_tong_xin)
+- 🎨 合并 [!45 fix 地址栏出现 false 问题](https://gitee.com/lyt-top/vue-next-admin/pulls/45),感谢[@随心](https://gitee.com/jiangqiang1996)
+- 🎯 优化 `/src/utils/storage` 下 `key` 编写成 `${__NEXT_NAME__}:${key}`,防止部署多套系统到同一域名不同目录时,变量共用的问题(`__NEXT_NAME__`为 `package.json` 中的 `name`)
+- 🎯 优化 watermark 单词拼写错误
+
 ## 2.4.21
 
 `2022.12.12`

+ 16 - 10
Web/README.md

@@ -1,25 +1,31 @@
 <div align="center">
 	<img src="https://img-blog.csdnimg.cn/9efd5420327a46b7bd6d93524a97229d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHl0LXRvcA==,size_14,color_FFFFFF,t_70,g_se,x_16">
 	<p align="center">
-	    <a href="https://v3.vuejs.org/" target="_blank">
-	        <img src="https://img.shields.io/badge/vue.js-vue3.x-green" alt="vue">
-	    </a>
-	    <a href="https://element-plus.gitee.io/#/zh-CN/component/changelog" target="_blank">
-	        <img src="https://img.shields.io/badge/element--plus-%3E1.0.0-blue" alt="element plus">
-	    </a>
+		<a href="https://v3.vuejs.org/" target="_blank">
+			<img src="https://img.shields.io/badge/vue.js-vue3.x-green" alt="vue">
+		</a>
+		<a href="https://element-plus.gitee.io/#/zh-CN/component/changelog" target="_blank">
+			<img src="https://img.shields.io/badge/element--plus-%3E1.0.0-blue" alt="element plus">
+		</a>
 		<a href="https://www.tslang.cn/" target="_blank">
-	        <img src="https://img.shields.io/badge/typescript-%3E4.0.0-blue" alt="typescript">
-	    </a>
+	    <img src="https://img.shields.io/badge/typescript-%3E4.0.0-blue" alt="typescript">
+	  </a>
 		<a href="https://vitejs.dev/" target="_blank">
-		    <img src="https://img.shields.io/badge/vite-%3E2.0.0-yellow" alt="vite">
+		  <img src="https://img.shields.io/badge/vite-%3E2.0.0-yellow" alt="vite">
 		</a>
 		<a href="https://gitee.com/lyt-top/vue-next-admin/blob/master/LICENSE" target="_blank">
-		    <img src="https://img.shields.io/badge/license-MIT-success" alt="license">
+		  <img src="https://img.shields.io/badge/license-MIT-success" alt="license">
 		</a>
 	</p>
 	<p>&nbsp;</p>
 </div>
 
+#### 💝 长期赞助商
+
+<a href="http://www.ccflow.org/" target="_blank">
+	<img src="./src/assets/ccflowRightNextAdmin.png" width="50%" height="70px">
+</a>
+
 #### 🌈 介绍
 
 基于 vue3.x + CompositionAPI setup 语法糖 + typescript + vite + element plus + vue-router-next + pinia 技术,适配手机、平板、pc 的后台开源免费模板,希望减少工作量,帮助大家实现快速开发。

+ 15 - 15
Web/package.json

@@ -1,6 +1,6 @@
 {
 	"name": "vue-next-admin",
-	"version": "2.4.21",
+	"version": "2.4.3",
 	"description": "vue3 vite next admin template",
 	"author": "lyt_20201208",
 	"license": "MIT",
@@ -15,8 +15,8 @@
 		"@wangeditor/editor": "^5.1.23",
 		"@wangeditor/editor-for-vue": "^5.1.12",
 		"animate.css": "^4.1.1",
-		"axios": "^1.2.1",
-		"countup.js": "^2.3.2",
+		"axios": "^1.3.3",
+		"countup.js": "^2.4.2",
 		"cropperjs": "^1.5.13",
 		"echarts": "^5.4.1",
 		"echarts-gl": "^2.0.9",
@@ -28,7 +28,7 @@
 		"mitt": "^3.0.0",
 		"monaco-editor": "^0.34.1",
 		"nprogress": "^0.2.0",
-		"pinia": "^2.0.28",
+		"pinia": "^2.0.32",
 		"print-js": "^1.6.0",
 		"qrcodejs2-fixes": "^0.0.2",
 		"qs": "^6.11.0",
@@ -36,7 +36,7 @@
 		"sortablejs": "^1.15.0",
 		"splitpanes": "^3.1.5",
 		"vform3-builds": "^3.0.8",
-		"vue": "^3.2.45",
+		"vue": "^3.2.47",
 		"vue-clipboard3": "^2.0.0",
 		"vue-grid-layout": "^3.0.0-beta1",
 		"vue-i18n": "^9.2.2",
@@ -46,19 +46,19 @@
 		"vue3-tree-org": "^4.1.1"
 	},
 	"devDependencies": {
-		"@types/node": "^18.11.13",
+		"@types/node": "^18.14.0",
 		"@types/nprogress": "^0.2.0",
 		"@types/sortablejs": "^1.15.0",
-		"@typescript-eslint/eslint-plugin": "^5.46.0",
-		"@typescript-eslint/parser": "^5.46.0",
+		"@typescript-eslint/eslint-plugin": "^5.53.0",
+		"@typescript-eslint/parser": "^5.53.0",
 		"@vitejs/plugin-vue": "^4.0.0",
-		"@vue/compiler-sfc": "^3.2.45",
-		"eslint": "^8.29.0",
-		"eslint-plugin-vue": "^9.8.0",
-		"prettier": "^2.8.1",
-		"sass": "^1.56.2",
-		"typescript": "^4.9.4",
-		"vite": "^4.0.0",
+		"@vue/compiler-sfc": "^3.2.47",
+		"eslint": "^8.34.0",
+		"eslint-plugin-vue": "^9.9.0",
+		"prettier": "^2.8.4",
+		"sass": "^1.58.3",
+		"typescript": "^4.9.5",
+		"vite": "^4.1.4",
 		"vite-plugin-vue-setup-extend": "^0.4.0",
 		"vue-eslint-parser": "^9.1.0"
 	},

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 227 - 337
Web/pnpm-lock.yaml


+ 14 - 6
Web/src/App.vue

@@ -1,10 +1,11 @@
 <template>
 	<el-config-provider :size="getGlobalComponentSize" :locale="getGlobalI18n">
-		<router-view v-show="themeConfig.lockScreenTime > 1" />
+		<router-view v-show="setLockScreen" />
 		<LockScreen v-if="themeConfig.isLockScreen" />
-		<Setings ref="setingsRef" v-show="themeConfig.lockScreenTime > 1" />
+		<Setings ref="setingsRef" v-show="setLockScreen" />
 		<CloseFull v-if="!themeConfig.isLockScreen" />
-        <Upgrade v-if="needUpdate" />
+		<Upgrade v-if="needUpdate" />
+		<!-- <Sponsors /> -->
 	</el-config-provider>
 </template>
 
@@ -19,13 +20,14 @@ import other from '/@/utils/other';
 import { Local, Session } from '/@/utils/storage';
 import mittBus from '/@/utils/mitt';
 import setIntroduction from '/@/utils/setIconfont';
-import checkUpdate from "/@/utils/auto-update";
+import checkUpdate from '/@/utils/auto-update';
 
 // 引入组件
 const LockScreen = defineAsyncComponent(() => import('/@/layout/lockScreen/index.vue'));
 const Setings = defineAsyncComponent(() => import('/@/layout/navBars/breadcrumb/setings.vue'));
 const CloseFull = defineAsyncComponent(() => import('/@/layout/navBars/breadcrumb/closeFull.vue'));
 const Upgrade = defineAsyncComponent(() => import('/@/layout/upgrade/index.vue'));
+// const Sponsors = defineAsyncComponent(() => import('/@/layout/sponsors/index.vue'));
 
 // 定义变量内容
 const { messages, locale } = useI18n();
@@ -36,18 +38,24 @@ const storesThemeConfig = useThemeConfig();
 const { themeConfig } = storeToRefs(storesThemeConfig);
 const needUpdate = ref(false);
 
+// 设置锁屏时组件显示隐藏
+const setLockScreen = computed(() => {
+	// 防止锁屏后,刷新出现不相关界面
+	// https://gitee.com/lyt-top/vue-next-admin/issues/I6AF8P
+	return themeConfig.value.isLockScreen ? themeConfig.value.lockScreenTime > 1 : themeConfig.value.lockScreenTime >= 0;
+});
 // // 获取版本号
 // const getVersion = computed(() => {
 // 	let isVersion = false;
 // 	if (route.path !== '/login') {
 // 		// @ts-ignore
-// 		if ((Local.get('version') && Local.get('version') !== __VERSION__) || !Local.get('version')) isVersion = true;
+// 		if ((Local.get('version') && Local.get('version') !== __NEXT_VERSION__) || !Local.get('version')) isVersion = true;
 // 	}
 // 	return isVersion;
 // });
 
 checkUpdate(() => {
-  needUpdate.value = true;
+	needUpdate.value = true;
 }, 60000);
 
 // 获取全局组件大小

+ 3 - 1
Web/src/layout/component/columnsAside.vue

@@ -68,6 +68,7 @@ const state = reactive<ColumnsAsideState>({
 
 // 设置菜单高亮位置移动
 const setColumnsAsideMove = (k: number) => {
+	if (k === undefined) return false;
 	state.liIndex = k;
 	columnsAsideActiveRef.value.style.top = `${columnsAsideOffsetTopRefs.value[k].offsetTop + state.difference}px`;
 };
@@ -192,7 +193,8 @@ watch(
 	background: var(--next-bg-columnsMenuBar);
 	ul {
 		position: relative;
-		.layout-columns-active {
+		.layout-columns-active,
+		.layout-columns-active a {
 			color: var(--next-bg-columnsMenuBarColor) !important;
 			transition: 0.3s ease-in-out;
 		}

+ 2 - 2
Web/src/layout/navBars/breadcrumb/setings.vue

@@ -395,7 +395,7 @@ import { useThemeConfig } from '/@/stores/themeConfig';
 import { useChangeColor } from '/@/utils/theme';
 import { verifyAndSpace } from '/@/utils/toolsValidate';
 import { Local } from '/@/utils/storage';
-import Watermark from '/@/utils/wartermark';
+import Watermark from '/@/utils/watermark';
 import commonFunction from '/@/utils/commonFunction';
 import other from '/@/utils/other';
 import mittBus from '/@/utils/mitt';
@@ -588,7 +588,7 @@ const onResetConfigClick = () => {
 	Local.clear();
 	window.location.reload();
 	// @ts-ignore
-	Local.set('version', __VERSION__);
+	Local.set('version', __NEXT_VERSION__);
 };
 // 初始化菜单样式等
 const initSetStyle = () => {

+ 1 - 1
Web/src/layout/routerView/iframes.vue

@@ -2,7 +2,7 @@
 	<div class="layout-padding layout-padding-unset layout-iframe">
 		<div class="layout-padding-auto layout-padding-view">
 			<div class="w100" v-for="v in setIframeList" :key="v.path" v-loading="v.meta.loading" element-loading-background="white">
-				<transition-group :name="name" mode="out-in">
+				<transition-group :name="name">
 					<iframe :src="v.meta.isLink" :key="v.path" frameborder="0" height="100%" width="100%" style="position: absolute" :data-url="v.path" v-show="getRoutePath === v.path" ref="iframeRef" />
 				</transition-group>
 			</div>

+ 108 - 0
Web/src/layout/sponsors/index.vue

@@ -0,0 +1,108 @@
+<template>
+	<div class="sponsors-container" title="点击前往体验" v-show="state.sponsors.isShow" @click="onSponsorsClick">
+		<el-carousel height="240px" indicator-position="none" :arrow="setCarouselShow" @change="onCarouselChange">
+			<el-carousel-item v-for="(v, k) in state.sponsors.list" :key="k">
+				<img :src="v.url" class="sponsors-img" />
+				<div class="sponsors-text" v-html="v.text"></div>
+			</el-carousel-item>
+		</el-carousel>
+		<div class="sponsors-close">
+			<SvgIcon name="ele-Close" :size="12" title="关闭赞助商" @click.stop="onCloseSponsors" />
+		</div>
+	</div>
+</template>
+
+<script setup lang="ts" name="layoutSponsors">
+import { reactive, computed, onMounted } from 'vue';
+import sponsorsOne from '/@/assets/ccflowRightNextAdmin.png';
+
+// 定义变量内容
+const state = reactive({
+	sponsors: {
+		list: [
+			{
+				url: sponsorsOne,
+				text: `驰骋BPM系统包含表单引擎+流程引擎+权限控制,方便集成,配置灵活,功能强大,适合中国国情的工作流引擎.演示:http://demo.ccflow.org。右上角点star方可加群: 1060674395`,
+				link: 'http://www.ccflow.org/',
+			},
+		],
+		isShow: false,
+		index: 0,
+	},
+});
+
+// 设置轮播图箭头显示
+const setCarouselShow = computed(() => {
+	return state.sponsors.list.length <= 1 ? 'never' : 'hover';
+});
+// 关闭赞助商
+const onCloseSponsors = () => {
+	state.sponsors.isShow = false;
+};
+// 轮播图改变时
+const onCarouselChange = (e: number) => {
+	state.sponsors.index = e;
+};
+// 当前项内容点击
+const onSponsorsClick = () => {
+	window.open(state.sponsors.list[state.sponsors.index].link);
+};
+// 延迟显示,防止影响其它界面加载
+const delayShow = () => {
+	setTimeout(() => {
+		state.sponsors.isShow = true;
+	}, 3000);
+};
+// 页面加载时
+onMounted(() => {
+	delayShow();
+});
+</script>
+
+<style scoped lang="scss">
+.sponsors-container {
+	position: fixed;
+	right: 15px;
+	bottom: 15px;
+	z-index: 3;
+	width: 200px;
+	background-color: var(--next-bg-main-color);
+	box-shadow: var(--el-box-shadow-lighter);
+	border-radius: 5px;
+	overflow: hidden;
+	cursor: pointer;
+	.sponsors-img {
+		width: 100%;
+		height: 80px;
+	}
+	.sponsors-text {
+		padding: 10px;
+		color: var(--el-text-color-regular);
+		font-size: var(--el-dialog-content-font-size);
+	}
+	.sponsors-close {
+		width: 60px;
+		height: 60px;
+		border-radius: 100%;
+		background: rgba(0, 0, 0, 0.05);
+		transition: all 0.3s ease;
+		position: absolute;
+		right: -35px;
+		bottom: -35px;
+		:deep(i) {
+			position: absolute;
+			left: 9px;
+			top: 9px;
+			color: #afafaf;
+			transition: all 0.3s ease;
+		}
+		&:hover {
+			transition: all 0.3s ease;
+			:deep(i) {
+				color: var(--el-color-primary);
+				transition: all 0.3s ease;
+			}
+		}
+	}
+}
+</style>

+ 4 - 14
Web/src/layout/upgrade/index.vue

@@ -1,13 +1,6 @@
 <template>
 	<div class="upgrade-dialog">
-		<el-dialog
-			v-model="state.isUpgrade"
-			width="300px"
-			destroy-on-close
-			:show-close="false"
-			:close-on-click-modal="false"
-			:close-on-press-escape="false"
-		>
+		<el-dialog v-model="state.isUpgrade" width="300px" destroy-on-close :show-close="false" :close-on-click-modal="false" :close-on-press-escape="false">
 			<div class="upgrade-title">
 				<div class="upgrade-title-warp">
 					<span class="upgrade-title-warp-txt">{{ $t('message.upgrade.title') }}</span>
@@ -17,11 +10,9 @@
 			<div class="upgrade-content">
 				{{ getThemeConfig.globalTitle }} {{ $t('message.upgrade.msg') }}
 				<div class="mt5">
-					<el-link type="primary" class="font12" href="https://gitee.com/zuohuaijun/Admin.NET/tree/next/Web/CHANGELOG.md" target="_black">
-						CHANGELOG.md
-					</el-link>
+					<el-link type="primary" class="font12" href="https://gitee.com/zuohuaijun/Admin.NET/tree/next/Web/CHANGELOG.md" target="_black"> CHANGELOG.md </el-link>
 				</div>
-        <!-- <div class="upgrade-content-desc mt5">{{ $t("message.upgrade.desc") }}</div> -->
+				<!-- <div class="upgrade-content-desc mt5">{{ $t("message.upgrade.desc") }}</div> -->
 			</div>
 			<div class="upgrade-btn">
 				<el-button round size="default" type="info" text @click="onCancel">{{ $t('message.upgrade.btnOne') }}</el-button>
@@ -36,7 +27,6 @@ import { reactive, computed, onMounted } from 'vue';
 import { useI18n } from 'vue-i18n';
 import { storeToRefs } from 'pinia';
 import { useThemeConfig } from '/@/stores/themeConfig';
-import { Local } from '/@/utils/storage';
 
 // 定义变量内容
 const { t } = useI18n();
@@ -45,7 +35,7 @@ const { themeConfig } = storeToRefs(storesThemeConfig);
 const state = reactive({
 	isUpgrade: false,
 	// @ts-ignore
-	version: __VERSION__,
+	version: __NEXT_VERSION__,
 	isLoading: false,
 	btnTxt: '',
 });

+ 1 - 1
Web/src/utils/axios-utils.ts

@@ -38,7 +38,7 @@ export const clearAccessTokens = () => {
 export const clearTokens = () => {
 	Local.remove(accessTokenKey);
 	Local.remove(refreshAccessTokenKey);
-	Session.removeToken();
+	Session.clear();
 };
 
 // axios 默认实例

+ 13 - 14
Web/src/utils/storage.ts

@@ -8,18 +8,23 @@ import Cookies from 'js-cookie';
  * @method clear 移除全部永久缓存
  */
 export const Local = {
+	// 查看 v2.4.3版本更新日志
+	setKey(key: string) {
+		// @ts-ignore
+		return `${__NEXT_NAME__}:${key}`;
+	},
 	// 设置永久缓存
-	set(key: string, val: any) {
-		window.localStorage.setItem(key, JSON.stringify(val));
+	set<T>(key: string, val: T) {
+		window.localStorage.setItem(Local.setKey(key), JSON.stringify(val));
 	},
 	// 获取永久缓存
 	get(key: string) {
-		let json = <string>window.localStorage.getItem(key);
+		let json = <string>window.localStorage.getItem(Local.setKey(key));
 		return JSON.parse(json);
 	},
 	// 移除永久缓存
 	remove(key: string) {
-		window.localStorage.removeItem(key);
+		window.localStorage.removeItem(Local.setKey(key));
 	},
 	// 移除全部永久缓存
 	clear() {
@@ -36,30 +41,24 @@ export const Local = {
  */
 export const Session = {
 	// 设置临时缓存
-	set(key: string, val: any) {
+	set<T>(key: string, val: T) {
 		if (key === 'token') return Cookies.set(key, val);
-		window.sessionStorage.setItem(key, JSON.stringify(val));
+		window.sessionStorage.setItem(Local.setKey(key), JSON.stringify(val));
 	},
 	// 获取临时缓存
 	get(key: string) {
 		if (key === 'token') return Cookies.get(key);
-		let json = <string>window.sessionStorage.getItem(key);
+		let json = <string>window.sessionStorage.getItem(Local.setKey(key));
 		return JSON.parse(json);
 	},
 	// 移除临时缓存
 	remove(key: string) {
 		if (key === 'token') return Cookies.remove(key);
-		window.sessionStorage.removeItem(key);
+		window.sessionStorage.removeItem(Local.setKey(key));
 	},
 	// 移除全部临时缓存
 	clear() {
 		Cookies.remove('token');
 		window.sessionStorage.clear();
 	},
-	// 移除Token缓存
-	removeToken() {
-		var key = 'token';
-		Cookies.remove(key);
-		window.sessionStorage.removeItem(key);
-	},
 };

+ 0 - 0
Web/src/utils/wartermark.ts → Web/src/utils/watermark.ts


+ 1 - 1
Web/src/views/login/component/account.vue

@@ -74,7 +74,7 @@ import { NextLoading } from '/@/utils/loading';
 
 import { storeToRefs } from 'pinia';
 import { useThemeConfig } from '/@/stores/themeConfig';
-import Watermark from '/@/utils/wartermark';
+import Watermark from '/@/utils/watermark';
 
 import { clearTokens, feature, getAPI } from '/@/utils/axios-utils';
 import { SysAuthApi } from '/@/api-services/api';

+ 4 - 13
Web/src/views/pages/filtering/index.vue

@@ -8,21 +8,12 @@
 			element-loading-background="rgba(255, 255, 255, 0.1)"
 			:class="{ 'min-h-360': state.tableData.data.length <= 0 }"
 		>
-			<div
-				v-for="(val, key) in filtering"
-				:key="key"
-				:ref="
-					(el) => {
-						if (el) dlRefs[key] = el;
-					}
-				"
-				class="filtering-list-flex"
-			>
+			<div v-for="(val, key) in state.filtering" :key="key" ref="dlRefs" class="filtering-list-flex">
 				<div class="filtering-list-title">{{ val.title }}</div>
 				<div class="filtering-list-item" :style="{ height: val.isMore ? 'auto' : '50px' }">
-					<span class="span" :class="v.active ? 'dd-active' : ''" v-for="(v, k) in val.children" :key="k" @click="onSelItem(val, v)">{{
-						v.label
-					}}</span>
+					<span class="span" :class="v.active ? 'dd-active' : ''" v-for="(v, k) in val.children" :key="k" @click="onSelItem(val, v)">
+						{{ v.label }}
+					</span>
 					<div class="dd-more" v-if="val.isShowMore" @click="val.isMore = !val.isMore">
 						<span>{{ val.isMore ? '收起' : '展开' }}</span>
 						<i :class="val.isMore ? 'el-icon-arrow-down' : 'el-icon-arrow-right'"></i>

+ 3 - 2
Web/vite.config.ts

@@ -25,7 +25,7 @@ const viteConfig = defineConfig((mode: ConfigEnv) => {
 		server: {
 			host: '0.0.0.0',
 			port: env.VITE_PORT as unknown as number,
-			open: env.VITE_OPEN === 'true',
+			open: JSON.parse(env.VITE_OPEN),
 			hmr: true,
 			proxy: {
 				'/gitee': {
@@ -57,7 +57,8 @@ const viteConfig = defineConfig((mode: ConfigEnv) => {
 			__VUE_I18N_LEGACY_API__: JSON.stringify(false),
 			__VUE_I18N_FULL_INSTALL__: JSON.stringify(false),
 			__INTLIFY_PROD_DEVTOOLS__: JSON.stringify(false),
-			__VERSION__: JSON.stringify(process.env.npm_package_version),
+			__NEXT_VERSION__: JSON.stringify(process.env.npm_package_version),
+			__NEXT_NAME__: JSON.stringify(process.env.npm_package_name),
 		},
 	};
 });

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio