前端架構: 腳手架通用框架封裝之入口文件開發(教程一)

腳手架入口文件開發

  • 創建腳手架項目: abc-cli

    • $ mkdir abc-cli && cd abc-cli
  • 全局安裝 lerna, $ npm i -g lerna

  • 基于 lerna 完成項目初始化

    • $ lerna init
  • 基于 lerna 創建腳手架 cli

    • $ lerna create cli
    • 一路回車
  • 好現在生成了一個 cli 的模板,目前需要修改它

  • 新建 abc-cli/packages/cli/bin/cli.js

    #!/usr/bin/env nodeconsole.log(1)
    
  • 到 abc-cli/packages/cli/package.json 中修改

    • "name": "@abc.com/cli" 目前假設我們的組織是 abc.com
    • "main": "lib/index.js" 入口文件修改名稱
    • "bin": { "abc-cli": "bin/cli.js" } 添加 bin 配置
    • "files": [ "lib", "bin" ] 在 files 中添加 bin
  • 在 abc-cli/packages/cli 中執行 $ npm link

    • 這樣,驗證執行 $ abc-cli 沒有報錯, 正常輸出1,就行
  • 現在為cli包添加依賴, 在頂層 abc-cli 目錄下執行

    • $ npm i import-local npmlog -w @abc.com/cli
  • 新建文件 abc-cli/packages/cli/lib/index.js

    module.exports = (args) => {console.log('args: ', args);
    }
    
  • 修改 abc-cli/packages/cli/bin/cli.js

    #!/usr/bin/env nodeconst il = require('import-local');
    const log = require('npmlog');
    const entry = require('../lib/index.js');// 判斷 __filename 是否可以加載到本地的版本
    if (il(__filename)) {log.info('abc-cli', '使用本地版本'); // 這里不會走
    } else {entry(process.argv.slice(2)); // 會執行這里
    }
    
  • 因為之前在 cli 包內執行了 npm link, 所以,這里一定會走 else

  • 驗證,執行 $ abc-cli 123, 終端輸出如下

    $ abc-cli 123
    args:  [ '123' ]
    
  • 注意,這里 import-local 包

    • 它的主要作用是導入本地包,以避免全局npm包和本地項目中的包產生沖突
    • 當全局node_modules和本地node_modules中存在相同的庫時,import-local會優先加載本地node_modules中的庫
    • 這樣可以確保項目中使用的是本地安裝的、可能經過定制的庫版本,而不是全局安裝的版本
    • 這對于管理項目依賴和避免版本沖突非常有用
  • 此時,我們通用腳手架框架的入口文件開發完畢了

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

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

相關文章

Qt 中Json的構造和解析簡單例子

概述: Qt中使用Json比較方便,不像純C需要導入CJson RapidJson JsonCpp等第三方的庫,主要使用到QJsonDocument、QJsonObject對象即可 1、如何構造一個json字符串 假如我們需要構造 {"cmd":"1001","data":{"content&q…

Linux 下安裝Jupyter

pip3 install jupyter pip3 install ipython -------------------------------------------- pip3 install jupyterlab jupyter lab pip3 list | grep jupyterlab 啟動: python3 -m jupyter lab 2.安裝朱皮特 pip3 install -i https://pypi.douban.com/simpl…

高性能的key-value數據庫Redis 介紹

Redis 是一個高性能的key-value數據庫。 Redis是一個開源的鍵值存儲系統,通常用于緩存和消息傳遞。它支持多種類型的數據結構,如字符串、列表、集合、散列表和有序集合等。Redis的特點是提供了高性能、靈活性和可伸縮性。 Redis的主要特點包括&#xff…

Pytorch學習 day02(加載數據)

加載數據 * Dataset提供一種方式:來獲取數據及其label,給數據進行編號 * Dataloader為神經網絡提供不同的數據形式 Dataset的組織形式有很多種,例如: 將label放在文件夾名上,如下: #Dateset # --train #…

Python算法題集_組合總和

Python算法題集_組合總和 題39:組合總和1. 示例說明2. 題目解析- 題意分解- 優化思路- 測量工具 3. 代碼展開1) 標準求解【值傳遞回溯】2) 改進版一【引用傳遞堆棧回溯】3) 改進版二【過程值列表緩存遍歷后檢索】 4. 最優算法5. 相關資源 本文為Python算法題集之一的…

.halo勒索病毒的最新威脅:如何恢復您的數據?

尊敬的讀者: 隨著科技的發展,網絡安全已經成為我們日常生活中不可忽視的重要議題。其中,勒索病毒是當前網絡安全威脅中的一大挑戰,而“.halo”勒索病毒更是近期備受關注的惡意軟件之一。本文將介紹關于“.halo”勒索病毒的背景知…

AI新工具(20240227) StickerBaker文本生成貼紙的工具;Mistral Large;Rewind等

StickerBaker - 基于Replicate和Fly.io技術,100%開源的制作貼紙的工具 StickerBaker是一個基于人工智能的貼紙創作工具,允許用戶通過輸入特定的提示語句生成獨特的貼紙。這個工具使用了Replicate平臺來生成貼紙,同時依托于Fly.io作為其基礎設…

算法項目外包的收費方式

針對算法研究性項目的收費方式和注意事項,這取決于項目的具體性質、規模和所涉及的技術領域。以下是一些常見的收費方式和需要注意的問題,希望對大家有所幫助。北京木奇移動技術有限公司,專業的軟件外包開發公司,歡迎交流合作。 收…

Python學習DAY09_文件和異常

文件和異常 實際開發中常常會遇到對數據進行持久化操作的場景,而實現數據持久化最直接簡單的方式就是將數據保存到文件中。 在 Python 中實現文件的讀寫操作其實非常簡單,通過 Python 內置的 open 函數,我們可以指定文件名、操作模式、編碼信…

1552.平衡二叉樹

輸入格式 第一行包含整數 N,表示總插入值數量。第二行包含 N 個不同的整數,表示每個插入值。 輸出格式 輸出得到的 AVL 樹的根是多少。 數據范圍 1≤N≤20 輸入樣例1: 5 88 70 61 96 120 輸出樣例1: 70 輸入樣例2&#xff1a…

商業江湖大揭秘:月入千萬與顆粒無收,究竟差了什么?

在商業的浩瀚江湖 英雄豪杰們或乘風破浪、月入千萬,或步履蹣跚、顆粒無收,這背后的奧秘究竟何在?是天意難測,還是人為疏忽?是制度的不完善,還是工具的滯后不前?答案就隱藏在你未曾注意的細節之…

公司招嵌入式開發崗位,為什么感覺一年比一年難?

最近看到一個問題: 是一個HR在吐槽招不到嵌入式開發的人才。 這句話,難免會誤導一些想入行嵌入式的同學,臥槽,這么缺人?趕緊沖! 哼次哼次學完一堆技術棧,一投簡歷,一個面試機會都沒有。 這就是…

24路電磁鎖主板在智能存儲系統中的作用

在無人值守場景中,如自助服務機、智能生鮮柜、共享儲物柜等,使用24路電磁鎖主板可以集成身份識別技術,將用戶的驗證結果轉化為相應的開鎖動作,提升用戶體驗和運營效率,是實現智能存儲系統高效、安全和自動化運行的關鍵…

Kubernetes的五大開源存儲項目

在Kubernetes中,關于數據的持久化管理是一種挑戰,對此,社區提供了多種存儲的解決方案,這些方案旨在簡化和優化容器化應用程序的持久化數據管理。 現介紹 Kubernetes 的五大開源存儲項目,帶你了解開源存儲解決方案的多…

unity后期

unity|后處理篇 前言一、Post-Processing 1、 Post-Processing的使用2、Post-Processing后處理效果 抗鋸齒①、Ambient Occlusion 環境光遮蔽②、Auto Exposure 自動曝光③、Bloom 輝光/泛光④、Chromatic Aberration | 色差⑤、Color Grading 色調/顏色分級⑥、Depth Of Fiel…

銳捷網絡攜數據中心、以太全光等創新解決方案亮相2024MWC

在西班牙巴塞羅那舉行的2024年世界移動通信大會(MWC)上,銳捷網絡(下文簡稱“銳捷”)展示了將技術與應用充分融合的云數據中心、5G、光網絡等產品及解決方案,幫助更多行業組織建設更貼近業務、智能、簡單、高效、綠色低碳的網絡基礎設施,應對當下及未來的挑戰,共同連接更廣闊可能…

PHP語言常見面試題:請解釋一下PHP是什么,以及它的主要用途是什么?

PHP,英文全稱為Hypertext Preprocessor,中文名稱為“超文本預處理器”。它是一種通用的開源腳本語言,特別適用于Web開發領域。PHP最初是由Rasmus Lerdorf在1995年創建的,并且自那時以來,它已經發展成為一個功能強大且易…

骨傳導耳機好用嗎?六大選購法則與避坑技巧大公開

在過去的兩年里,骨傳導耳機逐漸成為大眾的新寵,這一趨勢并不出人意料。畢竟長時間使用音量過大的傳統入耳式耳機,多多少少會對我們的聽力健康構成威脅。然而不同耳機對聽力的潛在影響程度是有差異的。骨傳導耳機好用嗎?與傳統耳機…

租床小程序|租床系統|租賃軟件開發功能

隨著移動互聯網的普及,越來越多的人開始選擇在線上完成各種租賃業務,而醫院租床也不例外。在這個趨勢下,開發一款租賃小程序成為了市場的必然需求。 租床小程序的功能 1、搜索與篩選 為了滿足不同用戶的需求,小程序應該提供設備…

android適配器adapter,Android程序員架構之路該如何繼續學習

便于開發的插件、工具和第三方開源庫 1.GsonFormat 使用方法:快捷鍵AltS也可以使用AltInsert選擇GsonFormat,作用:速將json字符串轉換成一個Java Bean,免去我們根據json字符串手寫對應Java Bean的過程。 2.ButterKnife Zelezny …