汇总preserveModulesRoot无法按预期方式工作

时间:2020-10-28 09:43:16

标签: reactjs typescript rollupjs

我觉得使用preserveModulesRoot时的preserveModules选项无法正常工作。假设我有一个src/index.ts和一堆src/components/CompXYZ.tsx文件。我希望将保存模块和root设置为src时会发生的情况是,我的构建看起来像这样:

dist
-- index.js
-- index.map.js
-- index.d.ts
-- components
---- CompA.js
---- CompA.map.js
---- CompA.d.ts
---- CompB.js
---- CompB.map.js
---- CompB.d.ts

但是实际上发生的是,src前缀仅从input.ts文件中删除,没有其他前缀,因此构建最终看起来像这样:

dist
-- index.js
-- index.map.js
-- index.d.ts
-- components
---- CompA.d.ts
---- CompB.d.ts
-- src
---- components
------ CompA.js
------ CompA.map.js
------ CompB.js
------ CompB.map.js

因此,看来preserveModulesRoot仅影响input选项中提到的模块,但是如果我要手动逐个手动写出所有模块,我可以将它们放在我想要的位置,而不必使用preserveModulesRoot。如果不为启用preserveModules创建的所有其他模块设置root,那么此设置有什么意义?

这是我的rollup.config.js

import peerDepsExternal from 'rollup-plugin-peer-deps-external';
import resolve from '@rollup/plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import typescript from 'rollup-plugin-typescript2';
import postcss from 'rollup-plugin-postcss';
import image from '@rollup/plugin-image';

export default {
    input: 'src/index.ts',
    output: {
        dir: 'dist',
        format: 'esm',
        sourcemap: true,
        preserveModules: true,
        preserveModulesRoot: 'src',
    },
    plugins: [
        peerDepsExternal(),
        resolve(),
        commonjs(),
        typescript(),
        postcss(),
        image(),
    ],
};

0 个答案:

没有答案