Условно импортировать модули npm?
Структура моего проекта выглядит следующим образом:
- workspace
- customPackage
- customIndex.js
- myProject
- index.js
- myProject2
- index.js
В dev я хочу импортировать пакет из моего локального рабочего пространства следующим образом:
//index.js
import something from '../customePackage/customIndex.js'
Где, как и в производстве, мне нужен импорт для работы с модулями npm, такими как:
//index.js
import something from 'customPackage';
Цель состоит в том, чтобы иметь возможность использовать локальные изменения в пакете(без прохождения цикла фиксации). Наконец, после тестирования пакет может быть выдвинут и использован нормально через пакет npm.
Как это сделать в эффективном путь без необходимости вносить изменения в код каждый раз?
2 ответа:
Вы можете использовать Resolve#alias с Webpack:
resolve: { alias: { "customPackage": process.env.NODE_ENV === "production" ? "customPackage" : path.resolve(__dirname, "../customePackage/customIndex.js") } }
Тогда в вашем источнике вам нужно только сделать:
import something from 'customPackage';
И он укажет на правильный пакет. Очевидно, что вам нужно установить переменную окружения
NODE_ENV
или изменить ее в зависимости от среды сборки.
Если вы уже используете webpack, вы можете сделать две разные точки входа:
entry: { bundle: './Scripts/index.tsx', bundle2: './Scripts/index2.tsx' }, output: { publicPath: "/js/", path: path.join(__dirname, '/wwwroot/js/'), filename: '[name].js' },
Затем в
index
вы импортируете основной модуль, а вindex2
- тестовый модуль. Таким образом, у вас будут разные файлы пакетовbundle.js
иbundle2.js
.