當前位置:首頁 » 操作系統 » 源碼怎麼打包

源碼怎麼打包

發布時間: 2022-12-22 10:23:00

㈠ vscode源碼打包

1.打包方法: yarn run gulp vscode-win32-x64-archive,打包後生成的包在 .build\win32-x64\archive\VSCode-win32-x64.zip , 這種方法目前看似乎是從某個文件夾直接壓縮。在這個之前,需要先做 yarn的動作。

2.另一種方法: yarn run gulp vscode-win32-x64-min, 打包後,會在 vscode 當前目錄的上一級生成目錄VSCode-win32-x64,帶 min 和不帶 min 的編譯方法相比,min對於其中的js文件做過體積簡化。我們編譯應該用帶min的方式來編譯。

㈡ Webpack打包流程細節源碼解析(P2)

此篇博客緊承上一篇,上片討論了我們的webpack整個處理單個文件的流程,這一節主要說一說webpack的文件打包問題,其實本身是比較簡單的,但是有非同步塊和html-plugin的加入,使這個步驟變得尤為復雜,這里先介紹幾個重要的概念:

上一節中,我們成功的對每個文件進行了處理,並通過了process的方法對所有入口文件以及他們的依賴文件進行了處理,獲得了最初的依賴文件列表,現在我們就可以對資源的依賴進行優化處理,本片的內容將從webpack/lib/Compiler.js:510的斷點開始逐步的對源碼進行分析

在seal之前,由於一輪compilition已經執行完成,先調用finish方法進行收尾處理與之對應的是我們注冊的finish-moles事件,

這里我們首先看到的又是index.ejs這個老朋友,由於他是單獨的文件經過了loader處理沒有獲得額外的處理函數的依賴,所以最終這里看到的mole實際上是它的js外殼包起來的ejs文件,此階段也還沒有進行資源hash的注入等等

這里有一個FlagDependencyExportsPlugin進行了操作,聽名字可能就聽出來了,他是對我們資源中的export使用進行一個標志的作用, 和我們最終做出的tree shaking效果可能是相關的

調用seal事件處理

處理我們的preparedChunk,這個東西是我們剛好在進行addEntry的時候添加上的不知道你們還記不記得,中途就沒有添加過新的,所以講道理,一個entry是只用一個的,但是這里使用了一個數組不知道有什麼用意

然後把這個入口模塊添加到了block裡面,過後打包也是從block裡面拿數據,block裡面的東西會被打包成為單獨的文件,但是還是工作在之前的上下文中,這里可以通過看一下這里的import即是我們之前在路由文件中通過import函數設置引入的動態載入路由資源

進入到函數,就開始處理我們之前做好准備的block了,這里這是一個不斷處理依賴的過程,但是沒有使用遞歸的做法,畢竟文件太多了,不斷的進行遞歸會浪費很多空間,取而代之的是使用queue進行記錄,處理過程中不斷把新的需要處理的模塊放到queue裡面等待下一步處理

在每一步的處理中

處理完這一波循環依賴過後,本身的依賴樹結構變得扁平化,之前一層一層的模塊通過dependency連接起來作為一個樹的結構,而現在變成了頂層最終的幾個chunk

可以看到我們最終在這個入口(entry)設置中拿到了9個chunk,她們都有_moles屬性,我們的所有依賴都是放到這裡面的,是用的一個Set進行存儲,其中的依賴關系則是通過origins和reason等標識進行模塊間關系的連接的

還可以將我們的入口chunk和非同步載入的chunk進行一些對比(上面的是入口文件),下面的chunk中出現的origins就是指向我們之前的router那個mole

這個圖里也可以看到,兩個chunk實際上按照自己的路子搜集了所有的依賴,結果導致了_moles的文件數量都達到了一千多個,這就是我們常使用的CommonChunk插件需要處理的地方了,稍後進行討論

這輪處理我們成功的把主要的入口mole和非同步載入的模塊區分開了,然後開始按照類似的邏輯處理我們的第一個入口模塊

這個時候拿到chunkDependencies進行處理,這就是之前那個存儲block的東西,但是有個很奇怪的地方,就是這裡面居然只有三個chunk,而不是和上面的一樣是9個也不是只有一個入口模塊,這就讓人無從下手了(我非同步載入的模塊並不是一樣的,而且這些模塊之間沒有沒相互依賴)

喜聞樂見進行第二次處理,首先取出一個chunk拿到對應的存儲在value中的deps,對每一個項目添加上了他們的parent,但是有個組件就是用來removeParent的

在RemoveParentMolesPlugin這個插件中,針對每個mole都做了處理,看看這些模塊在哪些chunk之中有被使用到,把他們所存在的chunks按照id記錄下來,並改變她們的reason為幾種統一的chunk組合數組。這樣就做到了每個mole知道了自己被哪些chunk使用,但是從之前的單一reason到現在的多reason具體不知道有什麼用(恩。。可能是為作用域提升做准備)

然後嘛,移除空的模塊,不需要多解釋

然後這層處理就算完啦,主要進行了模塊的依賴梳理和拆分,並為他們添加上了指向父節點的指針(話說之前不是有origins嗎)

對模塊進行排序工作,不過只是按照索引進行排序罷了,那個按照出現概率進行排序處理的插件不是在這里工作的

又是那個flag的插件進行了處理,但是只是把所有模塊的used設置為了true,還有為一些被依賴的mole設置上他們的usedExports為true

ChunkConditions插件用於監視模塊上是否有chunkCondition函數,並返回他的執行結果,如果有模塊的此函數返回了false,那麼將會重寫這個模塊(重寫即是重新添加進入parent的鏈接以及reason等的設置)並且還會返回true,到至此過程不斷執行直至condition全部OK

RemoveParentMolesPlugin這個插件的作用有點玄乎,看樣子是對每個chunk進行處理,看對於多個chunk中都有的某一些mole,會直接把他們的reason設置為主要的入口chunk,而後把當前chunk中的mole移除掉(話說這個事情不是應該Common來做嗎)

然後移除所有空的模塊,再就是移除重復的模塊了(話說一直用set神他媽還會有重復的)

然後進行各種優化,比如出現的概率大的放到前面,這里還是做了mole和chunk兩種優化,也是有毛病,就像我們的react項目中可以知道react的使用次數最多,那麼他就被放到了最錢前面,緊隨其後的是echart等

HashedMoleIdsPlugin插件為我們的模塊計算出它的id,默認是通過md5進行計算,解出來的是base64的,而且計算的參數也僅僅只是通過模塊的libId進行hash,而這個libhash只是相對位置,連絕對的都不是,所以算下來這個東西能夠當成單個文件的hash了

applyMoleId,到這里你可能會想,誒之前不是已經設置好每個元素的id了嗎,為什麼還要搞這么個函數專門處理,我們在上一個生成id的時候實際上得到的id是根據我們的設置進行了截斷的,實際上拿到的hash碰撞的概率非常大,我們看看下面這個篩選的處理就可以知道,1885個模塊裡面竟然又3個重復的id,這種時候就要特殊處理了

執行sortItemsWithMoleIds依據id進行排序,不只是最外面的chunk,就連reason里的id也會被重新排序,也是蠻逗的,這里直接用的是id做比較並沒有判斷類型,也就是說把數字和字元串會混到一起,就算你是class也會拿valueOf出來比較,想想還是蠻刺激的,不過其實比較完成也沒有太特殊的用途就這么隨意一點也好

中間一些處理recordId的我忽略掉了

然後開始處理hash了,這里的hash具體使用了哪些參數和長度是多少呢

可以在此階段添加hashSalt即雜訊,給hash值添加一些特徵

進入mainTemplate的處理函數中,添加了一些字元串參數和數字參數,並且調用了mainTemplate的hash插件,但是她們的執行過程並不是保證我們最後生成的文件中能夠有結果的hash值,便於請求對應的資源文件,而是僅僅在hash的過程中添加了一些干擾的路徑參數等

最終一輪hash下來,chunk會得到自己的renderHash,而compilation會得到一個針對編譯過程的hash,這個hash就跟我們的所有資源扯上關聯啦,所以每次都是新的

創建模塊資源咯~

這些文章寫的都有點水,相當於是閱讀源碼時候做的筆記了,看看圖個樂子吧

㈢ gradle解壓源碼,重新打包

這幾天工作上遇到一個問題,三方的jar包在liunx下解壓不了,用gradle又能正常編譯,我們的apk是在liunx下用mk進行編譯的,編譯的過程中需要對jar包進行解壓,這樣就導致編譯失敗。
錯誤信息如下:以後再遇到這個錯誤,可能就jar包的問題。
FAILED: /bin/bash -c "(mkdir -p out/target/common/obj/java_LIBRARIES/xxx-sdk_intermediates/classes.jack.tmpjill.res ) && (unzip -qo /home/x/xx/xxx/APK92_GNBJ_EDO/code/libs/xxx-sdk-java20171027120314.jar -d out/target/common/obj/JAVA_LIBRARIES/xxx-sdk_intermediates/classes.jack.tmpjill.res ) && (find out/target/common/obj/JAVA_LIBRARIES/xxx-sdk_intermediates/classes.jack.tmpjill.res -iname \"*.class\" -delete ) && (JACK_VERSION=3.36.CANDIDATE out/host/linux-x86/bin/jack @build/core/jack-default.args --verbose error -D jack.import.resource.policy=keep-first -D jack.import.type.policy=keep-first -D jack.android.min-api-level=1 --import /home/x/xx/xxx/APK92_GNBJ_EDO/code/libs/xxx-sdk-java20171027120314.jar --import-resource out/target/common/obj/JAVA_LIBRARIES/xxx-sdk_intermediates/classes.jack.tmpjill.res --output-jack out/target/common/obj/JAVA_LIBRARIES/xxx-sdk_intermediates/classes.jack ) && (rm -rf out/target/common/obj/JAVA_LIBRARIES/xxx-sdk_intermediates/classes.jack.tmpjill.res )" warning: stripped absolute path spec from / mapname: conversion of failed ninja: build stopped: subcommand failed. build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed

解決方法:對jar包源碼重新打包

解壓jar包源碼,注意,是帶源碼的jar包,如果是編譯過的jar,是不能重新打包的。
步驟:
1.新建build.gradle文件,因為gradle會默認找到當前目錄下的build.gradle下的文件去執行;
2.在終端執行gradle unzip,執行這個task
以下命令將這個目錄 app/libs/xxx-sdk-java20171027120314.jar 下的jar包解壓到了 unpacked/dist 目錄。

解壓之後的源碼就是文件夾,重新打包的時候需要注意,包名和源碼的路徑名一致。現在利用Android studio進行打包。
步驟:
1.新建lib mole,選擇Android Libeary/Java Library;
2.注意修改包名與jar包路徑相同,eg:jar包解壓之後的路徑 dist/com/example/api ,那麼為了確保新生成的jar包里的Java文件import路徑相同,mole的包名也要命名為 com.example.api ;
3.將解壓之後的源碼java文件復制到lib model中;
4.在 app mole 下添加 lib mole 依賴。這是一種取巧的方法,當你添加了lib mole依賴之後,項目會重新rebuild,這個過程會將mole依賴編譯成jar包,存放在lib mole的 build/libs 目錄下,由於Android Studio版本不同,這個目錄可能有有所不同,但是都在build目錄下,找新的jar包就可以了。
這一部可能會報jar包找不到,或者lib mole中的import失敗,可能是因為lib mole依賴的jar包沒導入,導入之後在lib mole的build.gradle里配置一下就可以了。

這個時候,其實直接用這個jar包也可以了,如果向修改jar包名字,可以執行下面的gradle命令:

想了解更多可以參考 這里
然後在項目里測試一下jar包就可以了。
重新打包之後就可以在liunx下解壓了,正常編譯通過。

最後記錄一下mk編譯的一個錯誤 # [ERROR: Dex writing phase: classes.dex has too many IDs. Try using multi-dex](https://stackoverflow.com/questions/45472852/error-dex-writing-phase-classes-dex-has-too-many-ids-try-using-multi-dex) 在stackoverflow上找到了解決方法。

在mk文件中添加

參考:
https://stackoverflow.com/questions/39457116/gradle-build-hanging-when-jackoptions-is-enabled-for-java-1-8
https://stackoverflow.com/questions/45472852/error-dex-writing-phase-classes-dex-has-too-many-ids-try-using-multi-dex

㈣ 如何將一個java項目源代碼打包成jar文件

右鍵點擊項目,選擇Export,找到java-JAR file點擊next,選擇jar的保存路徑,一般保存到桌面就行了,點擊finish,就OK了

㈤ 如何把github上下載下來的maven源代碼zip文件打包成可運行的jar文件

用IDEA克隆項目,再把maven與IDEA整合,如圖所示點這個:

再點綠色三角,就可以打包。

這項目真大,等我下好直接把jar包發給你。

㈥ 源碼如何打包

一般有專門的安裝包製作工具!

㈦ maven中如何打包源代碼

在pom.xml中添加:
<build>
<plugins>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>2.1</version>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
配置中指定了phase為compile,意思是在生命周期compile的時候就將源文件打包,即只要執行的mvn命令包括compile這一階段,就會將源代碼打包。同樣,phase還可以指定為package、install等等。

㈧ 下面的源代碼怎麼打包成一個EXE文件

首先打開終端,使用pip先安裝pyinstaller,語法:pip install pyinstaller。然後使用pyinstaller來打包。打開終端,輸入pyinstaller 文件名.py。注意,pyinstaller需要找得到你的文件,就是說你的終端要切換到你的文件所在的目錄。
如果我有幫到你,請推薦一下。謝謝

php怎麼打包小程序

php源碼怎樣打包APP
php源碼怎樣打包APP_最新影視小程序源碼 可以打包成影視雙端APP 帶詳細圖文搭建教程...

猴小賊
原創
關注
0點贊·1270人閱讀
支持投屏、倍速播放、分享按鈕、聯系客服、返回按鈕,轉發等等

改源碼並非泛濫的SG 可以打包成雙端APP、支付寶、QQ、網路、微信、
這四個平台通用源碼,

共同一個後台,不依賴微擎,獨立安裝

後台功能太多了,我也就不一一截圖了,

大家都想問,為什麼發出來呢,因為我購買了正版,需要二次授權,直接找人破jie

發出來給大家分享一下

程序還是挺不錯的,希望大家喜歡

API站點

環境要求

n API是TP5框架,CMS是蘋果cms10(TP框架)
n API(視頻介面管理後台)及CMS(蘋果cms或其他影視站點)是兩個站點,需要用兩個域名或子域名創建

運行環境

伺服器安裝 寶塔面板 (相關安裝教程參照寶塔面板官方教程)

l PHP7.0或以上版本

l MYsql5.6

l Nginx

PHP開啟

fileinfo

sg11

擴展。

Nginx偽靜態配置:

location / {

if (!-e $request_filename){

rewrite ^(.*)$ /index.php?s=$1 last; break;

}

}

CMS站點環境

PHP >= 5.6

MYSQL5.6

Nginx

環境搭建

關鍵目錄

/public/ 站點根目錄

資料庫導入

¡ 直接上傳API目錄下的 data.sql 並導入

關鍵文件

/config/app.php api站點小程序appid相關信息配置(翻到最下面)
/config/database.php api站點的資料庫配置文件

/application/videos/model/Videos.php 視頻數據 CMS站點的資料庫用戶名及密碼

/application/videos/model/VideosType.php 視頻分類數據 CMS站點的資料庫用戶名及密碼

以上文件需要根據實際情況配置相關參數。

/config/database.php需配置當前api站點的相關資料庫信息。

/application/videos/model/Videos.php 及 /application/videos/model/VideosType.php 需配置視頻CMS站點的資料庫信息。

後台介紹

API後台地址: 域名/admin.php

API及CMS後台登錄帳密:admin 123123

CMS站點

環境要求

¡ 同API站點

資料庫導入

l 直接上傳CMS目錄下的 maccms.sql.gz 並導入(如果你已有蘋果CMS10,不必再進行此操作,直接配置你的cms資料庫用戶名及密碼即可)

關鍵目錄

/ 站點根目錄

CMS後台地址:域名/admin.php

關鍵文件

/application/database.php cms項目資料庫配置文件

採集站搭建教程這里就不多說了,每個資源站點頂部都有對應的幫助教程的,對照著他們的教程做就可以了

㈩ 如何把github上下載下來的源代碼zip文件打包成可運行的jar文件

既然已經安裝好maven庫和JDK,不需要 eclipse , 只需要執行一個命令就可以了,
打開命令提示符窗口,進入到源碼所在目錄,執行命令
mvn package

等待編譯打包完成,在 target 目錄下就可以了找到 jar 包了。

熱點內容
手機無線路由器怎麼設置密碼 發布:2025-05-12 05:18:28 瀏覽:815
渝人解壓密碼 發布:2025-05-12 05:18:12 瀏覽:768
備份網站資料庫備份 發布:2025-05-12 05:04:35 瀏覽:53
轉移的存儲卡 發布:2025-05-12 04:51:18 瀏覽:467
c語言大數相加 發布:2025-05-12 04:51:13 瀏覽:589
安卓內存大小有什麼影響 發布:2025-05-12 04:41:36 瀏覽:51
以下c語言常量錯誤的是 發布:2025-05-12 04:40:39 瀏覽:808
怎麼降低qq版本安卓80 發布:2025-05-12 04:40:39 瀏覽:190
一個密碼多少人知道後就不是秘密 發布:2025-05-12 04:26:07 瀏覽:521
ftp埠非21 發布:2025-05-12 04:09:09 瀏覽:229