簡體   English   中英

我的 NPM CLI package 可以在 CMD 上執行而無需全局安裝嗎?

[英]Can my NPM CLI package be executed on CMD without installing globally?

我寫了一個 NPM package ,它有自己的 CLI 命令。

讓我們將 package 命名為xyz並想象它現在可以在npmjs.com上使用

因此,假設用戶通過運行npm install xyz在他的項目中安裝此 package 。

現在他想在他的項目中的終端上運行xyz package 提供的 CLI 命令。

xyz do_this

這可以在不由用戶全局安裝此 package 的情況下完成嗎? 或者沒有任何進一步的用戶配置?

這是 xyz package 的package.json的一部分。

{
  "name": "xyz",
  "version": "1.0.0",
  "description": "Description",
  "main": "index.js",
  "preferGlobal": true,
  "bin": "./index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
........

以下是 npm 的工作原理。 當您在本地目錄中安裝 package 時,它會將可執行的依賴文件安裝在 node_modules 中的文件夾內,該文件夾位於 package.json 的文件夾中,但如果您將其全局設置為全局路徑。 例如,當我運行npm install http-server時,我的可執行文件以./node_modules/http-server/bin/http-server結尾,但是當我全局安裝它時,我將它作為node_modules/http-server/bin

解決這個問題的方法是,如果您只想運行可執行文件,只需在內部執行它,就像這樣./node_modules/http-server/bin/http-server 如果您希望它作為命令,您還需要讓用戶將目錄添加到他們的路徑中,這樣當用戶輸入命令時,計算機會在該文件夾中查找命令。 這是在 Linux 中添加 PATH 目錄的指南,您只需添加目錄/pathtofolder/node_modules/http-server/bin/或任何您的文件夾。 https://linuxize.com/post/how-to-add-directory-to-path-in-linux/

例如,如果我想將本地文件夾中的 http-server 添加到我的路徑中,我會運行

export PATH="/pathtofolder/node_modules/http-server/bin/:$PATH"

祝你好運! 讓我知道我可以如何幫助你!

暫無
暫無

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

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