Импортировать компоненты React с пространством имен

Мой компонент реакции имеет такую ​​структуру.

/build
    ..............................
/lib
    /inner
        /InnerComponent.js
        /index.js
    /OuterComponent1.js
    /OuterComponent2.js
    /index.js
.................................
package.json
.................................

Мой package.json выглядит так, как показано ниже

 {
      "name": "my-comp",
      .......................
      "main": "build/index.js",
      "scripts": {
        "build": "babel lib -d build",
        "build:watch": "babel lib -w -d build",
        "lint": "eslint lib/**; exit 0",
        "lint:watch": "esw -w lib/**",
        "prepublish": "npm run build"
      },
      "devDependencies": {
          .......................
      },
      "dependencies": {
          .......................
      },
      "directories": {
        "lib": "lib"
      },
      "repository": {
          .......................
      }
    }

OuterComponent1 и OuterComponent2 можно импортировать из lib/index.js как import {OuterComponent1,OuterComponent2} from "my-comp". Мне нужно импортировать все в lib/inner как import {InnerComponent} from "my-comp/inner" (я хочу добавить пространство имен для компонентов в папке lib/inner). Как это сделать после публикации в npm?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
1 618
1

Ответы 1

Вы можете создать именованный экспорт из inner/index.js следующим образом:

export { InnerComponent } from './InnerComponent';

Что затем разрешило бы импорт с использованием:

import { InnerComponent } from 'my-comp/inner';

Привет, Стив, my-comp должен быть опубликован в npm и установлен в некоторые другие проекты. при указании вышеупомянутого оператора импорта он дает мне эту ошибку Module not found: Can't resolve 'my-comp/inner' in 'H:\workspace\vscode\sample-project\src\components\home\sub'

user9615328 06.06.2018 15:57

Папка модуля в node_modules как my-comp? Похоже, он пытается найти модуль относительно папки, содержащей файл с оператором импорта импорта.

Steve Vaughan 06.06.2018 16:28

да, после установки my-comp войдет в модули узла моего проекта

user9615328 06.06.2018 17:02

ОК. Я думаю, что после установки в качестве модуля npm импорт будет работать. Если вы вручную добавляете его в свой тестовый проект, вы можете просто перетащить папку в node_modules или, альтернативно, использовать псевдоним разрешения Webpack, чтобы правильно найти папку.

Steve Vaughan 06.06.2018 17:34

Другие вопросы по теме