簡體   English   中英

Node.js 從 package.json 中安裝 Python 依賴項

[英]Node.js install Python dependencies from within package.json

我正在構建一個同時使用 Python 和 NPM 依賴模塊的 Node.JS 項目。

Node.JS 模塊位於package.json中,python 依賴項位於文件requirements.txt中。

我想通過運行npm installpackage.json中安裝所有依賴模塊(Python 和 Node.JS)。

這可能嗎?如何實現?

提前致謝!

這些文件如下所示。

包.json:


{
  "name": "app",
  "version": "1.0.0",
  "description": "Trial app",
  "main": "bin/index.js",
  "scripts": {
    "dev": "npm install",
    "start": "node app.js",
    "test": "jest --forceExit "
  },
  "keywords": [
    "AI",
    "Blockchain",
    "Decentralized"
  ],
  "dependencies": {
    "peerjs": "^1.3.2",
    "redis": "^3.1.2",
    "socket.io": "^4.1.2",
    "socket.io-client": "^4.1.2",
    "wrtc": "^0.4.7"
  },
  "devDependencies": {
    "@babel/core": "^7.16.7",
    "supertest": "^6.1.6"
  }
}

要求.txt:


Django==2.2.21
djangorestframework==3.7.7
django-rest-swagger
coreapi

您可以定義要在 package.json 的"scripts"部分中運行的命令。 那里的每個腳本都可以使用npm run [scriptname]

所以你可以這樣做( &&在第一個命令之后運行另一個命令)

"scripts": {
    "install": "npm install && pip -r requirements.txt",
    "dev": "npm install",
    "start": "node app.js",
    "test": "jest --forceExit "
  }

然后運行npm run install

"dev": "npm install"替換為"dev": "npm install & pip install"

向腳本添加“預安裝”條目。

npmyarnpnpm將在安裝dependencies項和 'devDependencies` 之前自動執行preinstall腳本:

包.json:

{
  "scripts": {
    "preinstall": "echo 'Installing Python Dependencies...' && pip install -r requirements.txt && pip install -r subproject/requirements.txt"
  },
  ...
}

要同時安裝 npm 和 python 依賴項,只需運行:

$> npm install
  Installing Python Dependencies...

此外,npm 進程中還有其他鈎子腳本,如“准備”,可能會有用。 腳本可以與... && npm run <script>鏈接,因此“腳本”部分可以組織成小的原子部分,並通過鏈接它們來構建。 我使用“腳本”作為項目的構建和部署活動知識庫,不僅在 JS 中,甚至在純 Python 項目中都取代了 make 文件功能。

也可以將“package.json”掛鈎到 python 腳本中,即創建類似“build_project.py”腳本的東西(或者任何適合你的名稱,我已經使用“make.py”和“build.py”來少打字)特定於項目,在那里添加所有與 python 相關的東西,並從中運行npm命令。 它可能比使用“package.json”中的“腳本”部分編碼更多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM