@siujs/plugin-jssdk

siujs plugin for `jssdk` project

Usage no npm install needed!

<script type="module">
  import siujsPluginJssdk from 'https://cdn.skypack.dev/@siujs/plugin-jssdk';
</script>

README

@siujs/plugin-jssdk

专门针对jssdk这样类型的类库项目

Scope

当前插件会扩展如下操作:

  • siu create: 辅助jssdk类型项目的packages/package的创建,避免手动 copy 带来的一些问题;
  • siu build: 辅助jssdk类型项目的package的构建流程

Usage

// in `siu.config.js` without options
module.exports = {
    plugins: ["@siujs/jssdk"]
};

// in `siu.config.js` with options
module.exports = {
    plugins: [
        [
            "@siujs/jssdk",
            {
                custom: {
                    create: { install: true },
                    build: {
                        format: "es,cjs,umd,umd-min",
                        dts: true,
                        transformConfig(config) {
                            config.treeshake({
                                moduleSideEffects: true
                            });
                            config.plugin("esbuild").tap(args => {
                                args[0].importeeAlias = id => {
                                    const parts = id.split(/[/\\]/);
                                    id = parts.shift();
                                    if (id.startsWith("@jsbridge")) {
                                        return path.resolve(__dirname, "./packages/", parts.join("/"));
                                    }
                                    return id;
                                };
                                return args;
                            });
                        }
                    }
                }
            }
        ]
    ]
};

// in `siu.config.js` with options and excludePkgs
module.exports = {
    plugins: [
        [
            "@siujs/jssdk",
            {
                // `packages/foo` and `packages/bar` 将不会参与到@siujs/plugin-build-es的处理流程中
                excludePkgs: ["foo", "bar"],
                custom: {
                    create: { install: true },
                    build: {
                        format: "es,cjs,umd,umd-min",
                        dts: true,
                        transformConfig(config) {
                            config.treeshake({
                                moduleSideEffects: true
                            });
                            config.plugin("esbuild").tap(args => {
                                args[0].importeeAlias = id => {
                                    const parts = id.split(/[/\\]/);
                                    id = parts.shift();
                                    if (id.startsWith("@jsbridge")) {
                                        return path.resolve(__dirname, "./packages/", parts.join("/"));
                                    }
                                    return id;
                                };
                                return args;
                            });
                        }
                    }
                }
            }
        ]
    ]
};