src/build.js in bridgetown-lit-renderer-2.0.0 vs src/build.js in bridgetown-lit-renderer-2.1.0.beta1
- old
+ new
@@ -1,20 +1,29 @@
+const autogeneratedBridgetownConfig = {
+ "source": "src",
+ "destination": "output",
+ "componentsDir": "_components",
+ "islandsDir": "_islands"
+}
+
const path = require("path")
const glob = require("glob")
// Glob plugin derived from:
// https://github.com/thomaschaaf/esbuild-plugin-import-glob
// https://github.com/xiaohui-zhangxh/jsbundling-rails/commit/b15025dcc20f664b2b0eb238915991afdbc7cb58
-const importGlobPlugin = () => ({
+const importGlobPlugin = (bridgetownConfig) => ({
name: "import-glob",
setup: (build) => {
build.onResolve({ filter: /\*/ }, async (args) => {
if (args.resolveDir === "") {
return; // Ignore unresolvable paths
}
- const adjustedPath = args.path.replace(/^bridgetownComponents\//, "../src/_components/")
+ const adjustedPath = args.path
+ .replace(/^\$components\/\*\*/, `../${bridgetownConfig.source}/${bridgetownConfig.componentsDir}/**`)
+ .replace(/^bridgetownComponents\//, `../${bridgetownConfig.source}/${bridgetownConfig.componentsDir}/`) // legacy
return {
path: adjustedPath,
namespace: "import-glob",
pluginData: {
@@ -25,30 +34,39 @@
})
build.onLoad({ filter: /.*/, namespace: "import-glob" }, async (args) => {
const files = glob.sync(args.pluginData.path, {
cwd: args.pluginData.resolveDir,
- }).sort()
+ })
+ .sort()
+ .map(module => module.replace(`../${bridgetownConfig.source}/${bridgetownConfig.componentsDir}/`, "$components/"))
+ .map(module => module.match(/^[a-zA-Z0-9]/) ? `./${module}` : module)
const importerCode = `
${files
.map((module, index) => `import * as module${index} from '${module}'`)
.join(';')}
const modules = {${files
.map((module, index) => `
- "${module.replace("../src/_components/", "")}": module${index},`)
+ "${module.replace("$components/", "")}": module${index},`)
.join("")}
};
export default modules;
`
return { contents: importerCode, resolveDir: args.pluginData.resolveDir }
})
},
})
+const bridgetownConfigured = (bridgetownConfig) => {
+ return {...autogeneratedBridgetownConfig, ...bridgetownConfig}
+}
+
module.exports = (esbuildOptions) => {
+ const bridgetownConfig = bridgetownConfigured(esbuildOptions.bridgetownConfig)
+
let inputData = [];
process.stdin.resume();
process.stdin.setEncoding('utf8');
@@ -58,10 +76,12 @@
process.stdin.on('end', () => {
const inputValues = JSON.parse(inputData.join())
esbuildOptions.plugins = esbuildOptions.plugins || []
- esbuildOptions.plugins.unshift(importGlobPlugin())
+ esbuildOptions.plugins.unshift(importGlobPlugin(bridgetownConfig))
+
+ if (esbuildOptions.bridgetownConfig) delete esbuildOptions.bridgetownConfig
require('esbuild').build({
...esbuildOptions,
stdin: {
contents: inputValues.code,