init命令有什么作用?

时间:2017-12-09 21:46:13

标签: javascript node.js linux unix jasmine

几个Node.js包以下两个步骤作为起点(仅以Jasmine为例):

npm install --save-dev jasmine
./node_modules/.bin/jasmine init

第一个陈述是直截了当的,但我不能在我的生活中找出第二个陈述在幕后做什么。 Jasmine docs只说它初始化它(我正在寻找更具技术性的东西)。

./ 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 testProj
  • npm init:创建package.json
  • npm install [--save-dev]:安装依赖项
  • ./ node_modules / .bin / init:具体是什么呢?
    • 简短:npx init

任何解释init的指针/文档都会受到高度赞赏。

修改

只是为了澄清,我知道 init做了什么(从测试和Jasmine文档中清楚),我只是不明白 它是如何做到的。我基本上试图找出为什么在从CLI运行脚本名称时需要init,以及init代码所在的位置。

2 个答案:

答案 0 :(得分:1)

我设法最终解决了这个问题。如果将来有人遇到此问题,以下是./node_modules/.bin/jasmine init的解释。

  1. ./node_modules/.bin/jasmine init从命令行执行
  2. 这会在jasmine中运行./node_modules/.bin/ Unix脚本(init参数尚未使用)
  3. 该脚本将路径解析为jasmine.js./node_modules/jasmine/bin/jasmine.js)并运行它
  4. Jasmine.js包含以下代码:var Command = require('../lib/command.js')
  5. Jasmine.js创建Command对象(command)的新实例并执行:command.run(jasmine, process.argv.slice(2));
    • process.argv是从命令行启动应用程序时给出的所有参数的数组。回顾该命令,可以看到slice(2)等于init
  6. run内的command.js功能通过将initJasmine映射到顶部的init来启动initJasmine
  7. 最后,initJasmine生成目录spec及其所有内容
  8. 希望将来帮助别人。

答案 1 :(得分:0)

jasmine init通过为您创建spec目录和配置json来初始化Jasmine的基本文件夹结构。您可以在https://github.com/jasmine/jasmine-npm

查找更多详细信息