国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

webpack編譯微信小程序

這篇具有很好參考價值的文章主要介紹了webpack編譯微信小程序。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

微信小程序開發(fā)目前主要還是依賴小程序原生開發(fā)者工具,但開發(fā)者工具目前還不支持常用的less、sass樣式編譯,以及環(huán)境變量配置等功能。使用webpack就可以彌補這些問題。

思路

webpack啟動后,通過webpack-shell-plugin-next包執(zhí)行啟動后的一些配置

項目結構

webpack編譯微信小程序

scripts目錄存放的是webpack執(zhí)行后的配置

src目錄存放微信小程序代碼

index.js是webpack入口文件,無實際業(yè)務作用

webpack.config.js是webpack啟動的默認執(zhí)行文件

文件代碼

package.json

scss2wxss:在scss文件同級編譯scss為wxss

wxss-cli:在scss文件同級編譯less為wxss

{
  "name": "webpack-mini-program",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "build": "webpack --config webpack.config.js"
  },
  "author": "bucong",
  "license": "ISC",
  "devDependencies": {
    "scss2wxss": "^1.0.2",
    "webpack": "^5.88.0",
    "webpack-cli": "^5.1.4",
    "webpack-shell-plugin-next": "^2.3.1",
    "wxss-cli": "^1.0.4"
  }
}
webpack.config.js
// webpack執(zhí)行后,執(zhí)行shell腳本插件
const WebpackShellPluginNext = require('webpack-shell-plugin-next');

module.exports = {
  entry: "./index.js", // 指定入口文件,webpack必須配置入口文件,否則無法打包,配置一個空文件即可
  mode: 'none', // 設置默認mode,如果不設置webpack會報警告,也可以根據(jù)需要設置 development、production
  plugins: [
    // 在構建完后,使用 Webpack Shell 插件讀取和修改你的 JS 文件
    new WebpackShellPluginNext({
      // 你要運行的任何 shell 命令都可以在這里配置(例如 node.js 腳本)
      onBuildEnd: {
        scripts: [
          'node ./scripts/update-file.js', // update-file.js配置了修改小程序環(huán)境變量的功能
          'npx scss2wxss', // 使用 scss2wxss 將scss文件轉(zhuǎn)換為wxss文件
          // 'wxss ./src' // 使用 wxss-cli 將less文件轉(zhuǎn)換為wxss文件
        ],
        blocking: false,
        parallel: true
      }
    })
  ]
};
scripts/update-file.js
const fs = require('fs');
const path = require('path');

// 獲取命令傳入的環(huán)境變量 npm run build --env=test
const env = process.env.npm_config_env || 'dev';

// 需要修改的json文件
const jsonPath = path.resolve('./src/project.config.json');
fs.readFile(jsonPath, 'utf-8', (err, data) => {
  if (err) {
    console.error(err);
    return;
  }
  // 先解析json為對象
  const json = JSON.parse(data);
  // 修改對應字段的value值(根據(jù)環(huán)境修改對應小程序的appid)
  if (env === 'pd') {
    json.appid = 'pdAppId';
  } else if (env === 'test') {
    json.appid = 'testAppId';
  } else {
    json.appid = 'devAppId';
  }

  fs.writeFile(jsonPath, JSON.stringify(json, null, 2), (err) => {
    if (err) {
      console.error(err);
      return;
    }
    console.log('update-json.js > JSON 文件已更新');
  });
});


// 需要修改的js文件
const jsPath = path.resolve('./src/config/env.js');
fs.readFile(jsPath, 'utf-8', (err, data) => {
  if (err) {
    console.error(err);
    return;
  }
  // 修改文件內(nèi)容
  const key = 'env'; // 對象的key或者變量名
  const newValue = env; // 替換后的值
  // 正則匹配對象的key,將文件中key為env的值改為命令傳入的環(huán)境變量,示例:{ env: 'dev' }
  // const pattern = new RegExp(`(${key}:\\s*['"])\\w+(['"])`);

  // 正則匹配變量賦值,將文件中變量名為env的值改為命令傳入的環(huán)境變量,示例:const env = 'dev'
  const pattern = new RegExp(`(${key} =\\s*['"])\\w+(['"])`);

  // 替換對應的值
  const newData = data.replace(pattern, `$1${newValue}$2`);

  fs.writeFile(jsPath, newData, (err) => {
    if (err) {
      console.error(err);
      return;
    }
    console.log('update-json.js > JS 文件已更新');
  });
});


// 替換文件全部內(nèi)容
const indexPath = path.resolve('./index.js');
// index.js的文件內(nèi)容為一個console
const indexData = `console.log('indexData')`;
fs.writeFile(indexPath, indexData, (err) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log('update-json.js > JS 文件已更新');
});

通過webpack修改的文件

src/config/env.js
// 環(huán)境變量,通過webpack修改js內(nèi)容,更新env的值
const env = 'dev';

// 各環(huán)境配置
const envConfig = {
  dev: {
    baseUrl: 'http://dev.base.com',
    ossUrl: 'http://dev.oss.com'
  },
  test: {
    baseUrl: 'http://test.base.com',
    ossUrl: 'http://test.oss.com'
  },
  pd: {
    baseUrl: 'http://pd.base.com',
    ossUrl: 'http://pd.oss.com'
  }
};

// 導出對應環(huán)境的配置項
export default envConfig[env];
project.config.json
{
  "description": "項目配置文件",
  "packOptions": {},
  "setting": {},
  "compileType": "miniprogram",
  "libVersion": "2.19.4",
  "appid": "wx6dd8sads8adysad8ase2", // 通過webpack修改json內(nèi)容,更新appid的值
  "projectname": "miniprogram",
  "condition": {},
  "editorSetting": {}
}

啟動命令

// 命令添加env參數(shù),test、dev、pd
npm run build --env=test

啟動后,命令窗口會繼續(xù)監(jiān)聽scss、less文件變更,熱更新到對應wxss文件文章來源地址http://www.zghlxwxcb.cn/news/detail-503462.html

到了這里,關于webpack編譯微信小程序的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • [微信小程序] 認識微信小程序及開發(fā)環(huán)境搭建

    ? 微信公眾平臺首頁 https://mp.weixin.qq.com ? 微信公眾平臺測試帳號系統(tǒng) https://open.weixin.qq.com/connect/qrconnect?appid=wx39c379788eb1286ascope=snsapi_loginredirect_uri=http%3A%2F%2Fmp.weixin.qq.com%2Fdebug%2Fcgi-bin%2Fsandbox%3Ft%3Dsandbox%2Flogin ? 1、微信公眾平臺提供的帳號模式 ? 2、各類型帳號的應用場景 餐廳

    2024年02月08日
    瀏覽(37)
  • 【微信小程序】如何上傳uniApp開發(fā)的微信小程序?

    【微信小程序】如何上傳uniApp開發(fā)的微信小程序?

    微信開發(fā)者工具下載鏈接 Hbuilder X下載鏈接 掃碼 選中賬號 登錄成功: ps: 如果之前沒有權限但是已經(jīng)登錄此賬號,需要在獲取到權限后重新登錄一次?? ps: 不選中 運行時是否壓縮代碼 有可能代碼包不包含插件大小過大,導致上傳失敗?? 小程序性能優(yōu)化指南 操作1 操作

    2024年02月09日
    瀏覽(856)
  • 在uniapp開發(fā)編譯成小程序時,模板編譯錯誤Module build failed (from ./node_modules/@dcloudio/webpack-uni-mp-loader/lib/

    在uniapp開發(fā)編譯成小程序時,模板編譯錯誤Module build failed (from ./node_modules/@dcloudio/webpack-uni-mp-loader/lib/

    解決方案:應該是你的ifdef 和 endif不匹配。你自己看看你的代碼,是不是有的地方只有一個endif或者只有ifdef,或者說寫錯了,檢查下。我的就是少了endif. 希望我的解決方案能幫到你

    2024年02月16日
    瀏覽(26)
  • 微信小程序:實現(xiàn)微信小程序應用首頁開發(fā) (本地生活首頁)

    微信小程序:實現(xiàn)微信小程序應用首頁開發(fā) (本地生活首頁)

    小程序應用頁面開發(fā) 1、創(chuàng)建項目并配置項目目錄結構 創(chuàng)建項目我相信大家都會,不會的可以csdn搜索即可 這里我們需要對項目目錄進行修改配置 在 app.json 文件中的 pages 數(shù)組中添加三個頁面,如上圖所示,然后我們將其他默認的兩個進行刪除,然后左側(cè)目錄 pages 文件夾中的

    2024年02月19日
    瀏覽(23)
  • 【微信小程序 | 實戰(zhàn)開發(fā)】配置微信小程序APPID并快速接入

    【微信小程序 | 實戰(zhàn)開發(fā)】配置微信小程序APPID并快速接入

    你是否想要掌握人工智能的最新技術和應用?你是否想要成為未來社會的創(chuàng)新者和領導者?你是否想要和全球的優(yōu)秀導師和同學一起學習和交流?如果你的答案是肯定的,那么歡迎來到床長人工智能教程網(wǎng)站,這里是你實現(xiàn)夢想的起點! 個人名片: ?? 作者簡介:一名大一在

    2024年01月24日
    瀏覽(22)
  • 前端開發(fā)——微信小程序

    前端開發(fā)——微信小程序

    使用的開發(fā)平臺為——微信開發(fā)者工具(點擊此處鏈接)? 依次點擊【工具】-【下載】-【穩(wěn)定版更新日志】,找到適合的版本,進行下載安裝。 注冊微信小程序(點擊注冊鏈接),注意注冊的是”小程序“。 根據(jù)注冊提示完成后,進入以下界面: 在側(cè)邊欄點擊【開發(fā)】-

    2024年02月03日
    瀏覽(19)
  • 微信小程序云開發(fā)

    微信小程序云開發(fā)

    1.小程序云開發(fā),讓前端程序員擁有后端的能力 2.包含:云函數(shù)(nodejs)、云數(shù)據(jù)庫(mogodb)、云存儲 3.前端寫好函數(shù)-上傳到云服務器 實現(xiàn)自定義云部署 4.前端去調(diào)用云函數(shù),間接通過云函數(shù)對數(shù)據(jù)庫的操作 5.前端-全棧 1.創(chuàng)建集合 2.添加記錄 ? 1.云id 來自云開發(fā)-概覽-環(huán)境

    2024年02月04日
    瀏覽(20)
  • 微信小程序 - 云開發(fā)

    微信小程序 - 云開發(fā)

    小程序·云開發(fā)是微信團隊聯(lián)合騰訊云推出的專業(yè)的小程序開發(fā)服務。 開發(fā)者可以使用云開發(fā)快速開發(fā)小程序、小游戲、公眾號網(wǎng)頁等,并且原生打通微信開放能力。 開發(fā)者無需搭建服務器,可免鑒權直接使用平臺提供的API進行業(yè)務開發(fā) 小程序 云開發(fā)又簡稱tcb,是微信官方

    2024年04月08日
    瀏覽(30)
  • 微信小程序云開發(fā)|基于微信小程序?qū)崿F(xiàn)房產(chǎn)中介平臺系統(tǒng)

    微信小程序云開發(fā)|基于微信小程序?qū)崿F(xiàn)房產(chǎn)中介平臺系統(tǒng)

    作者主頁:編程千紙鶴 作者簡介:Java、前端、Python開發(fā)多年,做過高程,項目經(jīng)理,架構師 主要內(nèi)容:Java項目開發(fā)、畢業(yè)設計開發(fā)、面試技術整理、最新技術分享 收藏點贊不迷路? 關注作者有好處 文末獲得源碼 項目編號:BS-XCX-012 語言環(huán)境:微信小程序 開發(fā)工具:微信開

    2024年04月25日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包