Как экспортировать мою библиотеку с путями, используя webpack?
На самом деле моя библиотека экспортирует ресурсы, которые будут импортированы таким образом:
import { fooComponent } from 'my-library/lib/components'
import { fooHook } from 'my-library/lib/hooks'
Что мне нужно изменить в моем webpack.config.js
можно импортировать мои ресурсы таким образом?
import { fooComponent } from 'my-library/components'
import { fooHook } from 'my-library/hooks'
мой webpack.config.js
:
...
entry: {
components: './src/components/index.js',
hooks: './src/hooks/index.js',
index: './src/index.js',
services: './src/services/index.js',
templates: './src/templates/index.js'
},
...
output: {
filename: '[name].js',
globalObject: 'typeof self !== "undefined" ? self : this',
library: 'my-library',
libraryTarget: 'umd',
path: path.join(fileRoot, 'lib'),
umdNamedDefine: true
},
изменять path: path.join(fileRoot, 'lib')
в path: path.join(fileRoot, '')
это не вариант, потому что мне нужно иметь путь распространения.
Можно ли решить эту проблему с помощью TypeScript или Webpack?
1 ответ
Во-первых, это не проблема с Webpack. Webpack объединит все, согласно вашей конфигурации, в ./lib/[name].js
и это именно то, что вы хотите, так как вам нужен путь распространения. Так что работа Webpack на этом заканчивается.
Введите роль package.json
, который определяет, какие пакеты доступны и где. Давайте рассмотрим два разных кода и то, что происходит под капотом (упрощение):
import lib from 'my-lib';
- найдите скрипт, обозначенный в 'node_modules/my-lib/package.json#main`
- импортировать все как
lib
из этого скрипта
import { someComponent } from 'my-lib/lib/components';
- искать 'node_modules / my-lib / lib / components.js
, or
node_modules / мой Пб / Библиотека / компоненты /index.js` - Импортировать
someComponent
из этого скрипта
Так что, похоже, нет никакой возможной конфигурации пакета, которая бы просто позволяла вам удалить lib
от вашего импорта. Но разве это большая проблема? Это всего три буквы