0
我正在嘗試創建一個命令行實用程序。但是,npm install(no -g)不會鏈接可執行文件。package.json用於最小命令行實用程序
我的期望是npm install會在本地安裝我的可執行文件。
我的package.json樣子:
{
"name": "test-bin",
"version": "0.1.0",
"description": "Test bin",
"bin": "./bin/test-bin.js",
"main": "./index.js",
"author": "",
"license": "ISC",
"repository": {
"type": "git",
"url": "file:///tmp/test-bin.git"
}
}
index.js是:
module.exports = function() {
console.log('invoked')
}
斌/測試bin.js是:
require('../')()
如果我跑NPM安裝,node_modules創建,但不是.bin
但是,如果在其它位置創建另一個項目使用第一作爲一個依賴:
{
"name": "test-test-bin",
"version": "0.1.0",
"description": "Test test bin",
"author": "",
"license": "ISC",
"repository": {
"type": "git",
"url": "file:///tmp/test-test-bin.git"
},
"dependencies": {
"test-bin": "file:///Users/you/somewhere/test-bin"
}
}
然後NPM安裝鏈接在該項目中的可執行文件:
node_modules/.bin/test-bin
故宮文件說,關於「斌」:
要使用此,在你的package.json這是 命令名稱映射到一個本地文件名提供一個倉場。在安裝時,npm會將 文件符號鏈接到全局安裝的前綴/ bin中,或者對於 本地安裝將./node_modules/.bin/符號鏈接到前綴/ bin中。
是按設計,還是我錯過了什麼?
這就是我正在觀察的。它似乎直接抵觸了文件說的。那麼,這是一個錯誤,還是我誤解了文檔,或者在我需要做的過程中遺漏了一些東西? – wdkendall
哦,我明白了文檔的意思。通過本地安裝,它們表示本地安裝包含可執行文件作爲依賴項的軟件包。 – wdkendall
你是對的:你在本地('NPM安裝包name')和全球('NPM安裝包名-g')安裝,與不同之處,其中已安裝的軟件包結束(在'/ node_modules'對於本地系統範圍的全局'node_modules')。運行_just_'npm install'並沒有真正的AFAIK這樣的名字,但是安裝依賴關係的確如此。 – robertklep