Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to install and run Typescript locally in npm?

I want to install and run Typescript (i.e. no global dependencies).

Here is my package.json file:

{   "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" } 

I then run:

npm install npm run tsc 

However when I run the second command I get sooo many errors it cannot display all it. Most of it is like the following:

../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'. 

In npm-debug.log I get:

0 info it worked if it ends with ok 1 verbose cli [ '/usr/bin/nodejs', '/usr/bin/npm', 'run', 'tsc' ] 2 info using [email protected] 3 info using [email protected] 4 verbose run-script [ 'pretsc', 'tsc', 'posttsc' ] 5 info lifecycle [email protected]~pretsc: [email protected] 6 silly lifecycle [email protected]~pretsc: no script for pretsc, continuing 7 info lifecycle [email protected]~tsc: [email protected] 8 verbose lifecycle [email protected]~tsc: unsafe-perm in lifecycle true 9 verbose lifecycle [email protected]~tsc: PATH: /usr/lib/node_modules/npm/bin/node-gyp-bin:/home/vagrant/foo/node_modules/.bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games 10 verbose lifecycle [email protected]~tsc: CWD: /home/vagrant/foo 11 silly lifecycle [email protected]~tsc: Args: [ '-c', 'tsc' ] 12 silly lifecycle [email protected]~tsc: Returned: code: 2  signal: null 13 info lifecycle [email protected]~tsc: Failed to exec tsc script 14 verbose stack Error: [email protected] tsc: `tsc` 14 verbose stack Exit status 2 14 verbose stack     at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/lib/utils/lifecycle.js:242:16) 14 verbose stack     at emitTwo (events.js:100:13) 14 verbose stack     at EventEmitter.emit (events.js:185:7) 14 verbose stack     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/lib/utils/spawn.js:40:14) 14 verbose stack     at emitTwo (events.js:100:13) 14 verbose stack     at ChildProcess.emit (events.js:185:7) 14 verbose stack     at maybeClose (internal/child_process.js:850:16) 14 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:215:5) 15 verbose pkgid [email protected] 16 verbose cwd /home/vagrant/foo 17 error Linux 3.13.0-88-generic 18 error argv "/usr/bin/nodejs" "/usr/bin/npm" "run" "tsc" 19 error node v5.12.0 20 error npm  v3.10.2 21 error code ELIFECYCLE 22 error [email protected] tsc: `tsc` 22 error Exit status 2 23 error Failed at the [email protected] tsc script 'tsc'. 23 error Make sure you have the latest version of node.js and npm installed. 23 error If you do, this is most likely a problem with the foo package, 23 error not with npm itself. 23 error Tell the author that this fails on your system: 23 error     tsc 23 error You can get information on how to open an issue for this project with: 23 error     npm bugs foo 23 error Or if that isn't available, you can get their info via: 23 error     npm owner ls foo 23 error There is likely additional logging output above. 24 verbose exit [ 1, true ] 

Note that removing the package and then installing typescript globally solves the problem. However if I then use npm install to install the local packages again, it reintroduces the problem.

like image 721
Yahya Uddin Avatar asked Jun 25 '16 15:06

Yahya Uddin


People also ask

How do I run a TypeScript file npm?

We can use the ts-node package to execute TypeScript files from the command line. Install it with npm or other package manager. After that, simply execute the TypeScript files with the command: ts-node filename.


2 Answers

It took me a while to figure out the solution to this problem - it's in the original question. You need to have a script that calls tsc in your package.json file so that you can run:

npm run tsc  

Include -- before you pass in options (or just include them in the script):

npm run tsc -- -v 

Here's an example package.json:

{   "name": "foo",   "scripts": {     "tsc": "tsc"   },   "dependencies": {     "typescript": "^1.8.10"   } } 
like image 88
ubershmekel Avatar answered Oct 13 '22 03:10

ubershmekel


As of npm 5.2.0, once you've installed locally via

npm i typescript --save-dev 

...you no longer need an entry in the scripts section of package.json -- you can now run the compiler with npx:

npx tsc 

Now you don't have to update your package.json file every time you want to compile with different arguments.

like image 25
Faust Avatar answered Oct 13 '22 04:10

Faust