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.
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.
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" } }
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With