У меня действительно простая библиотека React, которую я использую со своим собственным управлением состоянием.Это просто компонент высшего порядка:
import React from 'react';
/**
*
* @param {Object} state - Reference to SubState instance
* @param {Object} chunk - object of props you want maps to from state to props
*/
const connect = (state, chunk)=> Comp => props =>{
const newProps = {};
for (let key in chunk){
newProps[key] = state.getProp(chunk[key]);
}
return (<Comp {...newProps} {...props} />)
};
export {
connect
}
Я могу опубликовать библиотеку таким образом, и у меня получится синтаксическая ошибка из-за невозможности анализа <
в JSX.
Так что язапустите код через babel
//.babelrc
{
"presets": ["@babel/preset-env","@babel/preset-react"]
}
, используя эту конфигурацию веб-пакета
const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname),
filename: 'index.js',
library: 'substateConnect',
libraryTarget: 'umd'
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: ["babel-loader"]
}
]
},
}
, это раздел зависимостей и публикации моего package.json
"devDependencies": {
"@babel/core": "^7.0.0",
"@babel/preset-env": "^7.0.0",
"babel-core": "^6.26.3",
"babel-loader": "^8.0.2",
"babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"react": "^16.5.0",
"react-dom": "^16.5.0"
},
"files": [
"index.js",
"index.map",
"src/index.js"
],
"dependencies": {
"@babel/preset-react": "^7.0.0",
"substate": "^4.0.0",
"webpack": "^4.17.2",
"webpack-cli": "^3.1.0"
}
I 'используя preact-compat
для каждого веб-сайта и получая <undefined></undefined>
https://github.com/developit/preact-compat#usage-with-webpack
В настоящее время выполнение этого с помощью выходных данных babel реагирует в библиотеке и моей библиотеке, и Preact помечает любой HOC, который использует эту библиотеку, как <undefined></undefined>
ЕСЛИ я публикую не-babel'd-код, и это просто справочная информация в верхней части, написанная в новом ECMAScript, я получаю unable to parse
ошибку на <
в JSX.
Однако, если бы я ссылался на библиотеку НЕ через node_modules
, а в разработчике, сделавшем файлы типа myLibrary.js
, и использовал код un-babel'd, это работает.
Как правильно управлять своими зависимостями?Должен ли React быть взаимозависимостью?Кроме того, как заставить эту библиотеку работать из каталога node_modules
для ОБА React AND Preact?