常见问题

样式输出为 main.css

运行 build 或 dev 命令会在目标目录中生成main.css,而不是styles.css。这似乎是 esbuild 的所作所为。我能够通过安装 esbuild 的本地最新版本副本、从 obsidian-plugin-cli 中删除捆绑的 esbuild 并使用以下esbuild.config.js来解决这个问题:

const fs = require('fs');
let plugin = {
    name: "rename-styles",
    setup(build) {
        build.onEnd(() => {
            const {outfile} = build.initialOptions;
            const outcss = outfile.replace(/\.js$/, ".css");
            const fixcss = outfile.replace(/main\.js$/, "styles.css");
            if (fs.existsSync(outcss)) {
                console.log("Renaming", outcss, "to", fixcss);
                fs.renameSync(outcss, fixcss);
            }
        });
    }
}
module.exports = {
    plugins: [plugin],
}

Could not resolve “obsidian” (mark it as external to exclude it from the bundle)

这个问题的原因就是 esbuild 需要配置 external ,这个问题排查了很久,主要是因为我一直以为使用ESM模块的问题,而没有发现其实就是esbuild打包的问题。

  "scripts": {
    "dev": "obsidian-plugin dev src/publish.ts -e esbuild.json",
  },
{
	"external": [
	    "obsidian",
		"unist-util-visit-parents/do-not-use-color",
	    "devlop"
  ]
}

扩展阅读