今天就跟大家聊聊有關(guān)使用ng-packagr怎么對(duì)Angular進(jìn)行打包,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
在鐵山港等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),營(yíng)銷型網(wǎng)站,外貿(mào)網(wǎng)站建設(shè),鐵山港網(wǎng)站建設(shè)費(fèi)用合理。如何使用
既然 ng-packagr 被 Angular Cli 內(nèi)置,這讓我們進(jìn)一步簡(jiǎn)化了生產(chǎn)一個(gè) APF 規(guī)范格式的類庫(kù)的成本。在 Angualr Cli 里使用 ng g library
來創(chuàng)建一個(gè)類庫(kù)模板,例如在一個(gè)新的 Angular 應(yīng)用里執(zhí)行:
ng g library <library name>
而打包,則:
ng build <library name>
最終,將生成的 dist/<libary name>
目錄下文件上傳相應(yīng)包管理服務(wù)器(例如:npm)提供給其他 人使用。
配置說明
由 Angular Cli 生成的類庫(kù)模板大部分內(nèi)容同 Angular 應(yīng)用一樣,只是多了一個(gè) ng-package.json
的配置文件(對(duì)于生產(chǎn)環(huán)境是 ng-package.prod.json
),它是專門針對(duì) ng-packagr 的一個(gè)配置文件,如同 angular.json 一般也是基于 JSON Schema 格式,因此可以通過訪問ng-package.schema.json 了解所有細(xì)節(jié),以下描述一些重點(diǎn)項(xiàng)。
whitelistedNonPeerDependencies
ng-packagr 默認(rèn)會(huì)根據(jù) package.json 的 peerDependencies
節(jié)點(diǎn)清單來決定類庫(kù)所需要第三方依賴包,這些依賴包是不會(huì)被打包至類庫(kù)。
然而,所依賴包不存在 peerDependencies
節(jié)點(diǎn)里時(shí)(當(dāng)然建議需要依賴的項(xiàng)應(yīng)該在里面),就需要該屬性的配置。
lib/entryFile
指定入口文件。
lib/umdModuleIds
UMD 格式采用 rollup 打包,當(dāng)類庫(kù)需要引用一些無法猜出正確 UMD 標(biāo)識(shí)符時(shí),就需要你手動(dòng)映射這些類庫(kù)的標(biāo)識(shí)。
"umdModuleIds": { "lodash": "_" }
angular.json
Angular Cli 配置文件 angular.json 內(nèi)會(huì)增加一個(gè)以 <libary name>
命名的構(gòu)建配置,絕大多數(shù)配置性同普通 Angular 應(yīng)用如出一轍,唯一不同的是 builder
節(jié)點(diǎn)為:
"builder": "@angular-devkit/build-ng-packagr:build"
次級(jí)入口
有時(shí)候一個(gè)類庫(kù)可能會(huì)包含著多個(gè)二次入口,就像 @angular/core
類庫(kù)包含著一個(gè) @angular/core/testing
模塊,它只是運(yùn)用于測(cè)試,因此并不希望在項(xiàng)目中引入 @angular/core
時(shí)也包含測(cè)試代碼,但同時(shí)二者又是同一個(gè)功能性時(shí),這種次級(jí)導(dǎo)入顯得非常重要。
另一種像 ngx-bootstrap、@angular/cdk/ally 等都提供次級(jí)模塊的導(dǎo)入,可以更好的優(yōu)化體積。
不論出于何種目的,都可以通過 Angular Cli 簡(jiǎn)單的文件組織進(jìn)一步打包出主、次級(jí)分明的類庫(kù)。
ng g library
生成的結(jié)構(gòu)大概如下:
<libary name> ├── src | ├── public_api.ts | └── lib/*.ts ├── ng-package.json ├── ng-package.prod.json ├── package.json ├── tsconfig.lib.json └── tsconfig.spec.json
當(dāng)根目錄下包含README.md
、LICENSE
時(shí)會(huì)自動(dòng)被復(fù)制到dist
目錄中,Npm 規(guī)定必須包含 README.md 文件,否則訪問已發(fā)布類庫(kù)頁(yè)時(shí)會(huì)有未找到描述文件錯(cuò)誤提示。
若想創(chuàng)建一個(gè) <libary name>/testing
的次級(jí)入口,只需要在 <libary name>
根目錄下創(chuàng)建一個(gè) testing
目錄:
<libary name> ├── src | ├── public_api.ts | └── lib/*.ts ├── ng-package.json ├── ng-package.prod.json ├── package.json ├── tsconfig.lib.json ├── tsconfig.spec.json └── testing ├── src | ├── public_api.ts | └── *.ts └── package.json
核心是需要提供一個(gè) package.json
文件,而且內(nèi)容簡(jiǎn)單到姥姥家。
{ "ngPackage": {} }
最后,依然使用 ng build <libary name>
,會(huì)產(chǎn)生一個(gè)次級(jí)導(dǎo)入模塊。
小結(jié)
至此,基本上利用 Angular Cli 可以快速的構(gòu)建一個(gè)可發(fā)布于 Npm Angular 類庫(kù),更復(fù)雜的可以構(gòu)建像 ngx-bootstrap、@angular/cdk/* 類庫(kù)。
自定義構(gòu)建
Angular Cli 雖然提供非常便利的環(huán)境,但是對(duì)于一些復(fù)雜環(huán)境像 Delon 類庫(kù)(ng-alain基建系列類庫(kù))包含著多個(gè)類庫(kù)、類庫(kù)又包含多個(gè)次級(jí)導(dǎo)入時(shí),Angular Cli 會(huì)顯得有點(diǎn)啰嗦,特別是對(duì)每個(gè)類庫(kù)的 angular.json 配置。其實(shí) @angular-devkit/build-ng-packagr 非常簡(jiǎn)單,如果將取進(jìn)一步簡(jiǎn)化,整個(gè)實(shí)現(xiàn)差不多相當(dāng)于:
const path = require('path'); const ngPackage = require('ng-packagr'); const target = path.resolve(__dirname, './projects/<libary name>'); ngPackage .ngPackagr() .forProject(path.resolve(target, `ng-package.prod.json`)) .withTsConfig(path.resolve(target, 'tsconfig.lib.json')) .build() .then(() => { // 構(gòu)建完成后干點(diǎn)事 });
將上面的代碼放到 ./build.js
,執(zhí)行:
node scripts/build.js
其結(jié)果完成是等價(jià)。
build()
返回的是一個(gè) Promise
對(duì)象,意味著可以確保構(gòu)建開始前和結(jié)束后做一點(diǎn)額外的事。
看完上述內(nèi)容,你們對(duì)使用ng-packagr怎么對(duì)Angular進(jìn)行打包有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝大家的支持。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)名稱:使用ng-packagr怎么對(duì)Angular進(jìn)行打包-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://jinyejixie.com/article28/dhoijp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站制作、全網(wǎng)營(yíng)銷推廣、電子商務(wù)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
營(yíng)銷型網(wǎng)站建設(shè)知識(shí)