npm已安装并正在从IntelliJ IDEA 15中使用
我的目标是在IntelliJ中为我的TypeScript源代码生成types,但是我想学习使用Windows命令行,所以我可以明确指定命令行选项来修补,以了解每个选项的作用。 我很困惑的设置和使用它,我已经find谷歌search相关的各种花絮…我敢肯定,我错过了一些非常基本的东西,博客或回答问题假设为共同的知识.. 。
这是我所尝试的和我所看到的…
第1步 :安装打字稿:
npm install -g typescript
这会导致在我的系统上安装以下文件/目录结构:
C:\Users\{my user id}\AppData\Roaming\npm\node_modules\typescript |---bin | |--- tsc | |--- tscserver |---lib | |--- lib.core.d.ts | |--- ... | |--- typescriptServices.js |--- .npmignore |--- ... |--- ThirdPartyNoticeText.txt
第2步 :天真地尝试从Windows命令行直接运行tsc
:
我在Google上find的例子是:
编译单个文件:
tsc app.ts
上面的例子来自http://www.primordialcode.com/blog/post/typescript-command-line-compiler
这不起作用,因为:
tsc
的安装目录不在Windows Path
C:\Users\{my user id}\AppData\Roaming\npm\node_modules\typescript\bin
,显然这很容易通过更改Window PATH环境variables来解决或解决/或input要执行的命令时完全限定tsc
文件的path。
更重要的是tsc
文件不是Windows可执行文件… #!
Unix脚本( shebang )是一个死的东西。
检查tsc
文件:
#!/usr/bin/env node require('../lib/tsc.js')
第3步 :尝试从节点命令提示符运行tsc
:
C:\>
node
>
tsc
ReferenceError: tsc is not defined at repl:1:1 at REPLServer.defaultEval (repl.js:252:27) at bound (domain.js:287:14) at REPLServer.runBound [as eval] (domain.js:300:12) at REPLServer.<anonymous> (repl.js:417:12) at emitOne (events.js:82:20) at REPLServer.emit (events.js:169:7) at REPLServer.Interface._onLine (readline.js:210:10) at REPLServer.Interface._line (readline.js:549:8) at REPLServer.Interface._ttyWrite (readline.js:826:14) ^C
OK …让我们指定tsc
脚本的完整path:
C:\>
node
>
C:\Users\{my user id}\AppData\Roaming\npm\node_modules\typescript\bin\tsc
...
从字面上来说,唯一的输出是...
当指定完整path的tsc
脚本…我想它需要参数…但按tab
键显示似乎是节点命令(而不是tsc
命令)的列表。所以我不知道这是怎么回事
现在我卡住了
我需要安装/configuration/使用什么环境来调用tsc
(如http://www.primordialcode.com/blog/post/typescript-command-line-compiler )所示?
和/或
有没有一个教程或网站,可以帮助我从一个干净的Windows系统,以便能够从命令行使用TypeScript编译器生成TypeScript源文件的types?
您不应将TypeScript的bin
文件夹直接添加到Windows PATH
。 正如你注意到的,该bin
文件夹中的文件不能直接从命令行执行。
相反, npm
为全局安装包中的每个已配置可执行文件创建一个.cmd
脚本,并将其放入:
%APPDATA%\npm
尝试更新您的PATH
包括此文件夹,重新打开您的命令行,并尝试再次运行tsc
。
注意:默认情况下,Windows的Node.js安装程序将Node和NPM添加到Windows路径中。 如果你已经正常安装Node.js,这应该工作得很好。 关于如何设置节点的任何特殊情况?