Импортировать локальный пакет npm, используя область - PullRequest
1 голос
/ 31 марта 2019

Мой монорэпо:

/app1
  package.json
/app2
  package.json
/shared
  package.json

shared/package.json имеет "name": "@company/shared".

Файлы package.json проектов приложений имеют зависимость "@company/shared": "file:../shared".

При ссылке на общий код я хочу использовать «короткий» стиль, который также менее подвержен разрыву при перемещении:

import { foo } from "@company/shared"

Но это не работает, поэтому я должен сделать это::

import { foo } from "../../../../../shared/src/something"

Я безуспешно поиграл с package.json и tsconfig.json.

Как мне это настроить?

Ответы [ 2 ]

1 голос
/ 31 марта 2019

На самом деле в моем коде отсутствует часть.

Общий проект должен экспортировать общий материал в index.js (то есть в "бочкообразный" файл) и , что ссылается на в package.json:

"main": "dist/index.js",
"types": "dist/index.d.ts",

И тогда стиль импорта псевдонимов работает.

1 голос
/ 31 марта 2019

Вы должны связать свой общий пакет с зависимыми пакетами, используя npm-link.

cd ~/shared                 # go into the package directory
npm link                    # creates global link
cd ~/app1                   # go into some other package directory.
npm link @company/shared    # link-install the package

это скажет npm установить пакет из общей папки и обновиться с любыми изменениями, внесенными в исходный пакет.

для получения дополнительной информации см. https://docs.npmjs.com/cli/link.html

РЕДАКТИРОВАТЬ: Я понял только сейчас, что вы планируете загрузить общий пакет на сервер.в этом случае вы можете использовать пакет module-alias, https://www.npmjs.com/package/module-alias

, что позволит вам выполнить импорт, такой как const sharedModule = require('@shared/moduleName');

РЕДАКТИРОВАТЬ # 2: Для машинописного текста используйте https://www.npmjs.com/package/tsconfig-paths

...