Код: Выделить всё
// src/_react/useValue.ts
import { obj } from "../default";
import React, { useCallback, useEffect } from "react";
const useValue = () => {
const [value, setValue] = React.useState(obj.value);
useEffect(() => {
obj.value = value;
}, [value]);
const increment = useCallback(() => {
setValue((prev) => prev + 1);
}, []);
const decrement = useCallback(() => {
setValue((prev) => prev - 1);
}, [])
return { value, increment, decrement };
}
export default useValue;
< /code>
// src/_react/index.ts
export { default as useValue } from "./useValue";
< /code>
// src/default/value.ts
const obj = {
value: 0
}
export { obj }
< /code>
// src/default/index.ts
export { obj } from './value'
Я имею следующую конфигурацию запуска:
Код: Выделить всё
// rollup.config.mjs
import commonJS from '@rollup/plugin-commonjs';
import resolve from '@rollup/plugin-node-resolve';
import terser from '@rollup/plugin-terser';
import typescript from '@rollup/plugin-typescript';
import external from 'rollup-plugin-peer-deps-external';
export default [
{
input: 'src/default/index.ts',
output: [
{
file: `dist/default/cjs/index.js`,
format: 'cjs',
sourcemap: true,
},
{
file: `dist/default/esm/index.js`,
format: 'esm',
sourcemap: true,
},
],
plugins: [
external(),
resolve(),
commonJS(),
typescript({
tsconfig: './tsconfig.json',
}),
terser(),
],
},
{
input: 'src/_react/index.ts',
output: [
{
file: `dist/react/cjs/index.js`,
format: 'cjs',
sourcemap: true
},
{
file: `dist/react/esm/index.js`,
format: 'esm',
sourcemap: true
},
],
plugins: [
external(),
resolve(),
commonJS(),
typescript({
tsconfig: './tsconfig.json',
}),
// terser(),
],
},
];
< /code>
// tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "esnext",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"jsx": "react",
"sourceMap": true,
"outDir": "dist",
"strict": true,
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"baseUrl": "src"
}
}
import React, { useEffect, useCallback } from 'react';
var obj = {
value: 0
};
var useValue = function () {
var _a = React.useState(obj.value), value = _a[0], setValue = _a[1];
useEffect(function () {
obj.value = value;
}, [value]);
var increment = useCallback(function () {
setValue(function (prev) { return prev + 1; });
}, []);
var decrement = useCallback(function () {
setValue(function (prev) { return prev - 1; });
}, []);
return { value: value, increment: increment, decrement: decrement };
};
export { useValue };
//# sourceMappingURL=index.js.map
< /code>
Я не хочу двигаться < /p>
var obj = {
value: 0
};
< /code>
в этот файл.
Я хочу импортировать obj < /code> из 'default', чтобы иметь что-то вроде этого: < /p>
import React, { useEffect, useCallback } from 'react';
import { obj } from '../../default/esm' // import obj from default/esm
var useValue = function () {
var _a = React.useState(obj.value), value = _a[0], setValue = _a[1];
useEffect(function () {
obj.value = value;
}, [value]);
var increment = useCallback(function () {
setValue(function (prev) { return prev + 1; });
}, []);
var decrement = useCallback(function () {
setValue(function (prev) { return prev - 1; });
}, []);
return { value: value, increment: increment, decrement: decrement };
};
export { useValue };
//# sourceMappingURL=index.js.map
< /code>
Это возможно? Что мне изменить и где?
Подробнее здесь: https://stackoverflow.com/questions/797 ... lup-builds
Мобильная версия