2017-05-29 31 views
1

我在Windows 10上使用Vagrant。 在安裝與npm install(或npm install --no-bin-links,因爲我位於Windows上的Vagrant)的所有依賴關係後,./node_modules/.bin爲空。我期望找到一些命令行工具。節點命令行工具未編譯流浪者

在我的情況下,它是svg2png-many缺失。

我也嘗試用npm rebuild svg2png-many重建,但是這並沒有創建丟失的文件。

注:我沒有得到運行npm install任何錯誤,只需將文件不存在:

./svg2png.sh:8號線:./node_modules/.bin/svg2png-many:無這樣的文件或目錄

,這是在該文件

for t in "${themes[@]}" 
do 
    echo "dist/img/${t}/" 
    ./node_modules/.bin/svg2png-many -i "dist/img/${t}/" "dist/img/${t}/" 
done 

我應該嘗試下?

+0

但是你用'--no-bin-links'運行命令,所以鏈接不會被創建 – greuze

+0

@greuze如果運行'npm install',cli文件也不會被創建。你的意思是'./node_modules/中的文件。bin'只是符號鏈接? –

+0

確實,在'。/ node_modules/.bin'裏面有模塊二進制文件的符號鏈接。但'npm install'應該下載模塊在'./node_modules/ ' – greuze

回答

2

如果您指定--no-bin-links,那麼二進制文件將不會在./node_modules/.bin中可用,因爲它們是模塊二進制文件的符號鏈接。您可以在npm documentation看到:

--no斌鏈接參數將阻止NPM從創建符號鏈接 的包可能包含任何二進制文件。

如果運行npm install你應該得到的所有模塊中package.json文件夾node_modules下載。運行npm install,或之前

$ ls -l node_modules/.bin 
total 0 
lrwxrwxrwx 1 ils ils 36 may 17 17:01 conventional-changelog -> ../conventional-changelog-cli/cli.js 
lrwxrwxrwx 1 ils ils 39 may 17 17:01 conventional-changelog-writer -> ../conventional-changelog-writer/cli.js 
lrwxrwxrwx 1 ils ils 37 may 17 17:01 conventional-commits-parser -> ../conventional-commits-parser/cli.js 
lrwxrwxrwx 1 ils ils 39 may 17 17:01 conventional-recommended-bump -> ../conventional-recommended-bump/cli.js 
lrwxrwxrwx 1 ils ils 34 may 17 17:01 cross-env -> ../cross-env/dist/bin/cross-env.js 
lrwxrwxrwx 1 ils ils 24 may 17 17:01 dateformat -> ../dateformat/bin/cli.js 
lrwxrwxrwx 1 ils ils 22 may 17 17:01 get-pkg-repo -> ../get-pkg-repo/cli.js 
lrwxrwxrwx 1 ils ils 25 may 17 17:01 git-raw-commits -> ../git-raw-commits/cli.js 
lrwxrwxrwx 1 ils ils 25 may 17 17:01 git-semver-tags -> ../git-semver-tags/cli.js 
lrwxrwxrwx 1 ils ils 28 may 17 17:01 handlebars -> ../handlebars/bin/handlebars 
lrwxrwxrwx 1 ils ils 22 may 17 17:01 JSONStream -> ../JSONStream/index.js 
lrwxrwxrwx 1 ils ils 21 may 17 17:01 lerna -> ../lerna/bin/lerna.js 
lrwxrwxrwx 1 ils ils 20 may 17 17:00 mkdirp -> ../mkdirp/bin/cmd.js 
lrwxrwxrwx 1 ils ils 39 may 17 17:01 npm-run-all -> ../npm-run-all/bin/npm-run-all/index.js 
lrwxrwxrwx 1 ils ils 16 may 17 17:01 rimraf -> ../rimraf/bin.js 
lrwxrwxrwx 1 ils ils 33 may 17 17:01 run-p -> ../npm-run-all/bin/run-p/index.js 
lrwxrwxrwx 1 ils ils 33 may 17 17:01 run-s -> ../npm-run-all/bin/run-s/index.js 
lrwxrwxrwx 1 ils ils 20 may 17 17:00 semver -> ../semver/bin/semver 
lrwxrwxrwx 1 ils ils 51 may 17 17:01 sl-log-transformer -> ../strong-log-transformer/bin/sl-log-transformer.js 
lrwxrwxrwx 1 ils ils 22 may 17 17:00 strip-indent -> ../strip-indent/cli.js 
lrwxrwxrwx 1 ils ils 25 may 17 17:01 uglifyjs -> ../uglify-js/bin/uglifyjs 
lrwxrwxrwx 1 ils ils 18 may 17 17:01 which -> ../which/bin/which 

如果您需要安裝一個缺少模塊,你可以刪除所有已下載的依賴關係:下面是輸出的一個例子(沒有--no斌鏈接標誌安裝後)通過運行npm install svg2png-many來安裝相關性。

我運行該命令並獲得svg2png-many下載./node_modules/svg2png-many和二進制文件存在./node_modules/svg2png-many/bin/index.js。您可以直接運行文件(而不是嘗試使用./node_modules/.bin沒有創建符號鏈接)

重要提示:在Windows上使用時,流浪,爲了npm install工作,你必須

  • 要麼運行啓動vagrant up管理員
  • 或使用該選項--no-bin-links

第一個控制檯顯然是這裏所需的解決方案。

+0

你說得對,'--no-bin-links'選項是罪魁禍首。但這不是主要原因。根據https://stackoverflow.com/questions/24200333/symbolic-links-and-synced-folders-in-vagrant'vagrant up'必須以管理員身份運行,以便'npm install'能夠創建符號鏈接。 –