不在vagrant上编译节点命令行工具

时间:2017-05-29 15:24:31

标签: node.js npm vagrant

我在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

我接下来应该尝试什么?

1 个答案:

答案 0 :(得分:2)

如果您指定--no-bin-links,则./node_modules/.bin中的二进制文件将不可用,因为它们是模块二进制文件的符号链接。您可以在npm documentation中看到:

  

- no-bin-links 参数将阻止npm创建符号链接   对于包可能包含的任何二进制文件。

如果您运行npm install,您应该将package.json文件中的所有模块都下载到node_modules文件夹中。以下是输出示例(安装后没有 - no-bin-links 标志):

$ 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

如果您需要安装缺少的模块,可以在运行npm install之前删除所有下载的依赖项,或者只运行npm install svg2png-many来安装依赖项。

我运行命令并在svg2png-many中下载./node_modules/svg2png-many,并且./node_modules/svg2png-many/bin/index.js中存在二进制文件。您可以直接运行该文件(而不是尝试使用未在./node_modules/.bin中创建的符号链接)

重要提示:在Windows上使用Vagrant时,要使npm install正常工作,您必须

  • 运行以管理员身份启动vagrant up的控制台
  • 或使用选项--no-bin-links

第一个显然是这里所需的解决方案。