uniapp+ts 多環境編譯

1. 創建項目

npx degit dcloudio/uni-preset-vue#vite-ts [項目名稱]

2.創建env目錄

多環境配置文件命名為.env.別名

添加index.d.ts


interface ImportMetaEnv{readonly VITE_ENV:string,readonly UNI_PLATFORM:string,readonly VITE_APPID:string,readonly VITE_NAME:stringreadonly VITE_VERSION:stringreadonly VITE_API_BASE_URL:string
}interface ImportMeta{readonly env:ImportMetaEnv;
}

3.修改vite.config.ts

import { defineConfig, loadEnv,type PluginOption } from "vite";
import uni from "@dcloudio/vite-plugin-uni";
import {resolve } from 'path'
import { copyToDeployDir } from "./post-build-plugin";
import { modifyVersion } from "./version-plugin";// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {const env = loadEnv(mode, process.cwd()+"/env", ['VITE_']);return {envDir:resolve(__dirname, 'env'),plugins: [modifyVersion(mode,env),uni(),copyToDeployDir(mode,env)],resolve:{alias:{'@':resolve(__dirname, 'src')}}}
});

post-build-plugin.ts文件內容為:

import {  loadEnv,type PluginOption } from "vite";
import {resolve } from 'path';
import fs from 'fs-extra';//拷貝到發布目錄
export function copyToDeployDir(mode: string,baseEnv :Record<string,string>) : PluginOption {return{name: 'copy-to-deploy',enforce: 'post',async  closeBundle() {try{if (!baseEnv.VITE_NAME) {throw new Error('VITE_NAME environment variable is not defined');}const nodeEnv = baseEnv.VITE_USER_NODE_ENV == "development" ? "dev":"build";// 路徑安全處理const sourceDir = resolve(__dirname, 'dist');const destDir = resolve(__dirname, 'deploy', baseEnv.VITE_NAME);await fs.copy(sourceDir, destDir, { overwrite: true });console.log(`? 文件已復制到: ${destDir}`);if(baseEnv.VITE_PLATFORM =="mp-toutiao"){await createPackageFile(destDir, nodeEnv, baseEnv);}await updateProjectFile(destDir, nodeEnv, baseEnv);} catch (error) {console.error('? 文件復制失敗:', error instanceof Error ? error.message : error);process.exit(1); // 構建失敗時退出}}}
}//創建package.json文件
async function createPackageFile(destDir:string, nodeEnv:string, env:Record<string,string>){const filePath = resolve(destDir, nodeEnv, env.VITE_PLATFORM,"package.json")const content = "{\"industrySDK\": true}";await fs.writeFile(filePath, content);console.log(`? package.json文件已創建`);
}//更新項目 appid ,項目名稱
async function updateProjectFile(destDir:string, nodeEnv:string,env:Record<string,string>){const filePath = resolve(destDir, nodeEnv, env.VITE_PLATFORM,"project.config.json")const content = fs.readFileSync(filePath, 'utf8');const newContent = content.replace('TT_APPID', env.VITE_APPID).replace('TT_NAME',env.VITE_NAME);console.log(newContent)await fs.writeFile(filePath, newContent);
}

4.編譯命令執行

pnpm run dev:mp-toutiao-別名

注:package.json中需將編譯命令添加

"dev:mp-toutiao-別名": "uni -p mp-toutiao --mode 別名",

5.完整多環境配置工程

playlet: uniapp + typescript + pina 創建小程序,支持多環境導出小程序

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/81150.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/81150.shtml
英文地址,請注明出處:http://en.pswp.cn/web/81150.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

英語學習5.24

make informed decisions 表示“做出明智的決定”&#xff0c;是一個常用的固定搭配&#xff0c;常用于議論文中。 …to make informed decisions. 為了做出明智的決定&#xff08;表示目的的動詞不定式&#xff09;。 We need accurate data to make informed decisions. Ci…

【Qt】QImage::Format

QImage::Format 是 Qt 中用于指定圖像像素數據格式的枚舉類型。它決定了圖像如何存儲顏色信息和透明度&#xff08;如果有&#xff09;。選擇合適的 Format 對性能、內存占用以及是否支持某些特性&#xff08;如透明通道&#xff09;有重要影響。 常見的 QImage::Format 枚舉值…

算法筆記·數學·歐拉函數

題目&#xff1a;&#xff08;AcWing&#xff09; 給定 n 個正整數 ai&#xff0c;請你求出每個數的歐拉函數。 歐拉函數的定義 1~N 中與 N 互質的數的個數被稱為歐拉函數&#xff0c;記為 ?(N)。 若在算數基本定理中&#xff0c;N&#xff0c;則&#xff1a; ?(N) N 輸入…

深入理解Redis線程模型

Redis數據 redis數據保存在內存&#xff0c;但是會持久化到硬盤 Redis線程 Redis的整體線程模型可以簡單解釋為 客戶端多線程&#xff0c;服務端單線程。也就是可以多個客戶端同時連接。 核心線程模型&#xff1a;單線程 多路復用 Redis 的主線程負責處理所有客戶端請求&a…

「Python教案」輸入輸出函數的使用

課程目標 1&#xff0e;知識目標 能使用input()輸入函數和print()輸出函數實現人機之間的交互。能夠合理的確定輸入數據的數據類型&#xff0c;并進行數據類型轉換。能夠使用格式化字符串&#xff08;f-string&#xff09;將數據動態輸出。 2&#xff0e;能力目標 能夠使用…

醫療影像中,DICOM點云、三角面片實體混合渲染(VR)

此文章&#xff0c;涉及到專業性比較強&#xff0c;所以&#xff0c;大部分的內容&#xff0c;基本上都是示例代碼的形式出現。以下的技術路徑&#xff0c;完全經過實踐驗證&#xff0c;并且效果很好&#xff0c;可以放心使用。 1 概述 在醫學影像中&#xff0c;對DICOM的渲染…

【C/C++】線程狀態以及轉換

文章目錄 線程狀態以及轉換1 基本狀態1.1 新建&#xff08;New&#xff09;1.2 就緒&#xff08;Ready / Runnable&#xff09;1.3 運行中&#xff08;Running&#xff09;1.4 阻塞/等待&#xff08;Blocked / Waiting / Sleeping&#xff09;1.5 掛起&#xff08;Suspended&am…

Python與自動駕駛數據集處理:構建智能駕駛的基石

Python與自動駕駛數據集處理:構建智能駕駛的基石 在自動駕駛技術的快速發展中,數據始終是最核心的驅動力。自動駕駛系統依賴于大量的傳感器數據(激光雷達、攝像頭、GPS等),通過深度學習算法不斷優化決策,使車輛能夠自主感知、理解道路環境并做出合理決策。而 Python 作為…

【菜狗work前端】小程序加if判斷時不及時刷新 vs Web

零、前提&#xff1a; 實現input輸入數字不大于10000&#xff08;需要配合typenumber&#xff0c;maxlength5&#xff0c;這里沒寫&#xff09; 一、探究代碼&#xff1a; <input v-model"model1" input"changeModel1" placeholder"請輸入拒收件…

【Netty】- NIO基礎2

阻塞模式 客戶端代碼 public class Client {public static void main(String[] args) throws IOException {SocketChannel sc SocketChannel.open();sc.connect(new InetSocketAddress("localhost", 8080));// sc.write(Charset.defaultCharset().encode("he…

【WebRTC】源碼更改麥克風權限

WebRTC源碼更改麥克風權限 倉庫: https://webrtc.googlesource.com/src.git分支: guyl/m125節點: b09c2f83f85ec70614503d16e4c530484eb0ee4f

cocos creator使用jenkins打包微信小游戲,自動上傳資源到cdn,windows版運行jenkins

cocos 版本2.4.11 在windows上jenkins的具體配置和部署&#xff0c;可參考上一篇文章cocos creator使用jenkins打包流程&#xff0c;打包webmobile_jenkins打包,發布,部署cocoscreator-CSDN博客 特別注意&#xff0c;windows上運行jenkins需要關閉windows自己的jenkins服務&a…

力扣刷題(第三十六天)

靈感來源 - 保持更新&#xff0c;努力學習 - python腳本學習 多數元素 解題思路 這道題是要找出數組中出現次數超過一半的元素。有幾種不同的方法可以解決這個問題&#xff1a; 哈希表統計法&#xff1a;遍歷數組&#xff0c;用哈希表統計每個元素的出現次數&#xff0c;…

關于讀取CH584單片機的IO電平出現到的烏龍

本來是調用的庫里的 uint8_t get_wake_up_sta (void) {return GPIOB_ReadPortPin(GPIO_Pin_10);//return cc_gpio_get_in_io (WAKUP_CH);} 然后讀出來是0&#xff0c;我都配置上拉了。 搞不到原因。 最后是CH584單片機只有0和非零兩種狀態&#xff0c;讀出來1024被轉換成無…

Opencv常見學習鏈接(待分類補充)

文章目錄 1.常見學習鏈接 1.常見學習鏈接 1.Opencv中文官方文檔 2.Opencv C圖像處理&#xff1a;矩陣Mat 隨機數RNG 計算耗時 鼠標事件 3.Opencv C圖像處理&#xff1a;亮度對比度飽和度高光暖色調陰影漫畫效果白平衡浮雕羽化銳化顆粒感 4.OpenCV —— 頻率域濾波&#xff…

anaconda、miniconda、conda的關系及miniconda安裝

anaconda、miniconda、conda的關系及miniconda安裝 文章目錄 前言正文定義關系Linux安裝miniconda新建一個python3.8環境 參考 前言 本文用于記錄關于Anaconda、conda和Miniconda的定義及其關系的總結123&#xff1a; 正文 定義 conda 一個跨平臺的開源包管理和環境管理工具…

2024-2025年AI領域重大事件深度解析:技術革命、產業重構與未來挑戰

一、技術突破&#xff1a;從多模態到具身智能的跨越式演進 1. 生成式AI的“核爆級”升級 多模態融合&#xff1a;OpenAI的GPT-4o實現文本、圖像、語音的實時交互&#xff0c;GPQA基準測試得分達87.7%&#xff0c;在科學推理和編程任務中表現卓越1。谷歌的Gemini 2.0 Flash支持…

城市地下“隱形衛士”:激光甲烷傳感器如何保障燃氣安全?

城市“生命線”面臨的安全挑戰 城市地下管網如同人體的“血管”和“神經”&#xff0c;承載著燃氣、供水、電力、通信等重要功能&#xff0c;一旦發生泄漏或爆炸&#xff0c;將嚴重影響城市運行和居民安全。然而&#xff0c;由于管線老化、違規施工、監管困難等問題&#xff0…

融云 uni-app IMKit 上線,1 天集成,多端暢行

融云 uni-app IMKit 正式上線&#xff0c;支持一套代碼同時運行在 iOS、Android、H5、小程序主流四端&#xff0c;集成僅需 1 天&#xff0c;并可確保多平臺的一致性體驗。 融云 uni-app IMKit 在 Vue 3 的高性能加持下開發實現&#xff0c;使用 Vue 3 Composition API&#x…

《Claude:人工智能界的璀璨新星》

一、Claude 登場&#xff1a;AI 新時代的震撼開篇 在科技飛速發展的今天&#xff0c;人工智能&#xff08;AI&#xff09;已經成為推動社會進步和創新的核心力量。從智能語音助手到自動駕駛汽車&#xff0c;從圖像識別技術到自然語言處理&#xff0c;AI 正以驚人的速度滲透到我…