Относительная зависимость Webpack Typescript, определенная в package.json - PullRequest
0 голосов
/ 10 декабря 2018

Недавно я создал приложение React-Native и использовал относительные зависимости, определенные в package.json в каждой папке, чтобы избежать ../../../ подобных путей.

Мне нужно создать приложение React (DOM), поэтомуЯ создал свой собственный конфиг веб-пакета и хотел воспроизвести то же поведение.

Итак, у меня есть:

. / App / package.json:

{
    "name": "app",
    "version": "1.0.0",
    "private": true,
    "dependencies": {
        "test-service": "file:./services/Test",
        "home-screen": "file:./screens/Home"
    }
}

. / Приложение / экраны / Home / package.json:

{
    "name": "home-screen",
    "version": "1.0.0",
    "private": true,
    "dependencies": {}
}

. / Webpack.config.js:

{
    //...
    resolve: {
        descriptionFiles: ['package.json'],
        alias: {
            app: path.resolve(sourcePath)
        },
        modules: [path.resolve(sourcePath), 'node_modules'],
        extensions: ['.js', 'jsx', '.ts', '.tsx'],
        mainFields: ['module', 'main']
    },
    //...
}

. / Tsconfig.json:

{
    //...
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "baseUrl": "./app",
    "paths": {
        "app/*": ["./*"]
    },
    //...
}

. / App / App.tsx (точка входа)

import { Screen } from 'home-screen'
//...


И веб-пакет сообщает мне, что он не может найти модуль home-screen!

Журнал ошибок: https://pastebin.com/ai14n74h

Знаете ли вы, как я могу решить эту проблемуи использовать зависимости package.json в качестве псевдонимов?

Я уже использовал псевдонимы из веб-пакета, но я не убежден в их использовании, я думаю, что зависимости от узлов должны быть наилучшим способом обработки нужного мне поведения.

Спасибо

1 Ответ

0 голосов
/ 11 декабря 2018

Я думаю, что лучшим вариантом, который наверняка будет работать с компилятором машинописи, будет определение только этих псевдонимов путей в узле paths файла tsconfig.json и использование tsconfig-paths-webpack-plugin, чтобы webpack былзнать о них.Я думаю, что компилятор TS испытывает проблемы с их разрешением в сочетании с зависимостями package.json.

...