几个 Node.js 包有以下两个步骤作为起点(仅以 Jasmine 为例):
npm install --save-dev jasmine
./node_modules/.bin/jasmine init
第一个语句很简单,但我终究无法弄清楚第二个语句在幕后做了什么。 Jasmine 文档只说它初始化了它(我正在寻找更多技术性的东西)。
./node_modules/.bin/jasmine 看起来像这样:
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../jasmine/bin/jasmine.js" "$@"
ret=$?
else
node "$basedir/../jasmine/bin/jasmine.js" "$@"
ret=$?
fi
exit $ret
如果有帮助,我这样做是为了在本地克隆和安装包:
- mkdir testProj : 创建新的项目文件夹
- code testProj --add : 添加文件夹到工作区
- cd 测试项目
- npm init : 创建 package.json
- npm install [--save-dev] : 安装依赖项
- ./node_modules/.bin/init :具体是做什么用的?
- 简写:npx init
任何解释 init 的指针/文档将不胜感激。
编辑:
澄清一下,我知道 init 做了什么(从测试和 Jasmine 文档中可以清楚地看出),我只是不明白它是如何做的。我基本上是想找出为什么从 CLI 运行脚本名称时需要在脚本名称后面加上 init,以及 init 代码所在的位置。
最佳答案
我终于自己解决了这个问题。如果以后有人遇到这个,下面是./node_modules/.bin/jasmine init
的解释.
-
./node_modules/.bin/jasmine init
从命令行执行 - 这会运行
jasmine
./node_modules/.bin/
中的 Unix 脚本(init
参数尚未使用) - 脚本将路径解析为
jasmine.js
(./node_modules/jasmine/bin/jasmine.js
) 并运行它 -
Jasmine.js
包含此代码:var Command = require('../lib/command.js')
-
Jasmine.js
创建Command
的新实例对象(command
)并执行:command.run(jasmine, process.argv.slice(2));
- process.argv是从命令行启动应用程序时给出的所有参数的数组。回想一下命令,可以看到
slice(2)
等于init
- process.argv是从命令行启动应用程序时给出的所有参数的数组。回想一下命令,可以看到
run
内部功能command.js
发射initJasmine
通过映射init
至initJasmine
在最顶端- 最后,
initJasmine
制作目录spec
及其所有内容
希望以后能对其他人有所帮助。
关于javascript - 初始化命令有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47733528/