Как установить и запустить машинописный файл локально в npm?
Я хочу установить и запустить Typcript (т.е. Глобальные зависимости).
Вот мой файл package.json:
{
"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
Однако, когда я запускаю вторую команду, я получаю sooo много ошибок, она не может отобразить все это. Большинство из них похоже на следующее:
../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'.
В npm-debug.log я получаю:
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 ]
Обратите внимание, что удаление пакета, а затем установка машинописных файлов во всем мире решает проблему. Однако, если я снова использую npm install для установки локальных пакетов, он снова вводит проблему.
Ответы
Ответ 1
Чтобы установить локальный язык 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
Мне потребовалось некоторое время, чтобы выяснить решение этой проблемы - это в исходном вопросе. Вам нужно иметь script
который вызывает tsc
в файле package.json
чтобы вы могли запускать:
npm run tsc
Включить --
перед тем как передать параметры (или просто включить их в скрипт):
npm run tsc -- -v
Вот пример package.json
:
{
"name": "foo",
"scripts": {
"tsc": "tsc"
},
"dependencies": {
"typescript": "^1.8.10"
}
}
Ответ 3
Вам нужно указать npm, что "tsc" существует как локальный пакет проекта (через свойство "scripts" в вашем пакете.json), а затем запускайте его через 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
tsc
требуется файл конфигурации или.ts(x) для компиляции.
Чтобы решить обе проблемы, создайте файл tsconfig.json
со следующим содержимым:
{
"compilerOptions": {
"outFile": "../../built/local/tsc.js"
},
"exclude": [
"node_modules"
]
}
Кроме того, измените ваш запуск npm с помощью этого
tsc --config /path/to/a/tsconfig.json
Ответ 5
Начиная с версии 5.2.0, после локальной установки через
npm i typescript --save-dev
... вам больше не нужна запись в разделе scripts
в package.json
- теперь вы можете запустить компилятор с помощью npx:
npx tsc
Теперь вам не нужно обновлять файл package.json каждый раз, когда вы хотите скомпилировать с другими аргументами.
Ответ 6
Обратите внимание, что если вы используете typings
выполните следующие действия:
rm -r typings
typings install
Если вы делаете угловую 2 учебника, используйте это:
rm -r typings
npm run postinstall
npm start
если команда postinstall
работает, попробуйте установить типизацию по всему миру так:
npm install -g typings
вы также можете попробовать следующее, а не postinstall:
typings install
и вы должны устранить эту проблему!
Ответ 7
Эй, посмотрите это видео и посмотрите шаги по установке Typescript.