如何在npm中本地安装和运行Typescript?

时间:2016-06-25 15:35:54

标签: node.js typescript npm

我想安装并运行Typescript(即没有全局依赖项)。

这是我的package.json文件:

Rect2
然后我跑了:

{
  "name": "foo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "tsc": "tsc"
  },
  "devDependencies": {
    "typescript": "^1.8.10"
  },
  "author": "",
  "license": "ISC"
}

然而,当我运行第二个命令时,我得到很多错误,它无法显示所有错误。大部分内容如下:

npm install
npm run tsc

在npm-debug.log中,我得到:

../foo/node_modules/typescript/lib/lib.d.ts(5015,5): error TS2300: Duplicate identifier 'webkitTransformOrigin'.
../foo/node_modules/typescript/lib/lib.d.ts(5016,5): error TS2300: Duplicate identifier 'webkitTransformStyle'.
../foo/node_modules/typescript/lib/lib.d.ts(5017,5): error TS2300: Duplicate identifier 'webkitTransition'.
../foo/node_modules/typescript/lib/lib.d.ts(5018,5): error TS2300: Duplicate identifier 'webkitTransitionDelay'.
../foo/node_modules/typescript/lib/lib.d.ts(5019,5): error TS2300: Duplicate identifier 'webkitTransitionDuration'.
../foo/node_modules/typescript/lib/lib.d.ts(5020,5): error TS2300: Duplicate identifier 'webkitTransitionProperty'.

请注意,删除程序包然后全局安装typescript可以解决问题。但是,如果我再使用npm install再次安装本地软件包,则会重新解决问题。

7 个答案:

答案 0 :(得分:32)

我花了一段时间才弄清楚这个问题的解决方案 - 它在原始问题中。您需要scripttsc文件中调用package.json,以便运行:

npm run tsc 

在传入选项之前包含--(或者只是将它们包含在脚本中):

npm run tsc -- -v

以下是package.json的例子:

{
  "name": "foo",
  "scripts": {
    "tsc": "tsc"
  },
  "dependencies": {
    "typescript": "^1.8.10"
  }
}

答案 1 :(得分:21)

要在项目中将TypeScript本地安装为开发依赖项,可以使用--save-dev密钥

npm install --save-dev typescript

它还会将打字稿写入package.json

您还需要一个tsconfig.json文件。例如

{
  "compilerOptions": {
    "target": "ES5",
    "module": "system",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
  },
  "exclude": [
    "node_modules",
    ".npm"
  ]
}

有关tsconfig的更多信息,请参阅此处http://www.typescriptlang.org/docs/handbook/tsconfig-json.html

答案 2 :(得分:16)

从npm 5.2.0开始,通过以下方式在本地安装

npm i typescript --save-dev

...您不再需要scripts的{​​{1}}部分中的条目-您现在可以使用npx运行编译器:

package.json

现在,您不必每次要使用不同的参数进行编译时都更新package.json文件。

答案 3 :(得分:7)

你需要告诉npm“tsc”作为本地项目包存在(通过package.json中的“scripts”属性),然后通过npm run tsc运行它。要做到这一点(至少在Mac上)我必须在包中添加实际编译器的路径,比如

{
  "name": "foo"
  "scripts": {
    "tsc": "./node_modules/typescript/bin/tsc"
  },
  "dependencies": {
    "typescript": "^2.3.3",
    "typings": "^2.1.1"
  }
}

之后,您可以运行任何TypeScript命令,如npm run tsc -- --init(参数位于第一个--之后)。

答案 4 :(得分:2)

tsc需要编译配置文件或.ts(x)文件。

要解决这两个问题,请使用以下内容创建名为tsconfig.json的文件:

{
    "compilerOptions": {
        "outFile": "../../built/local/tsc.js"
    },
    "exclude": [
        "node_modules"
    ]
}

此外,使用此

修改您的npm运行
tsc --config /path/to/a/tsconfig.json

答案 5 :(得分:1)

请注意,如果您使用的是typings,请执行以下操作:

rm -r typings
typings install

如果你做的角度2教程使用这个:

rm -r typings
npm run postinstall
npm start

如果postinstall命令不起作用,请尝试全局安装打字:

npm install -g typings

你也可以尝试以下而不是postinstall:

typings install

你应该修复这个问题!

答案 6 :(得分:1)

您现在可以使用ts-node,这使您的生活变得如此简单

npm install -D ts-node
npm install -D typescript

ts-node script.ts