我觉得使用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(),
],
};