benjycui / bisheng

Transform Markdown(and other static files with transformers) into a SPA website using React.
MIT License
2.9k stars 419 forks source link

生成 filesTree 的时候没有正确删掉 source 路径 #200

Open ltaoo opened 5 years ago

ltaoo commented 5 years ago

在 Windows 下,如果我有如下配置:

{
    source: {
        components: './src/components',
        docs: './docs',
    }
}

src/components内有PrefixInput文件夹。

期望返回的filesTree应该是:

{
    components: {
        PrefixInput: { // ... },
    },
    docs: { //... },
}

但实际返回的是:

{
    components: {
        src: {
            components: {
                PrefixInput: { // ... },
            }
        },
    },
    docs: { //... },
}

查看源码,在utils/source-data.js中,

function getPropPath(filename, sources) {
    return sources.reduce(function (f, source) {
        console.log(f, source, f.replace(source, ''));
        return f.replace(source, '');
    }, filename.replace(new RegExp("".concat(path.extname(filename), "$")), '')).replace(/^\.?(?:\\|\/)+/, '').split(rxSep);
}

console.log的输出是:

src\components\PrefixInput\demo\basic src/components src\components\PrefixInput\demo\basic

因为在bisheng.config.js中使用的路径分割符是斜杠,但文件路径会变成反斜杠,就无法正确replace掉了。

pick 增加参数

以及,能否在bisheng-data-loader.js调用picker时传入bishengConfig? 在antd themeConfig中,components pick会筛选出组件文件,但写死了/^components/,实际可能是/src/components,我希望能在这里获取到bishengConfig.source,就可以正确筛选了。