MCPcopy
hub / github.com/esm-dev/esm.sh / buildModule

Method buildModule

server/build.go:256–1541  ·  view source on GitHub ↗
(analyzeMode bool)

Source from the content-addressed store, hash-verified

254}
255
256func (ctx *BuildContext) buildModule(analyzeMode bool) (meta *BuildMeta, includes [][2]string, err error) {
257 if err = ctx.checkCanceled(); err != nil {
258 return
259 }
260 entry := ctx.resolveEntry(ctx.esmPath)
261 if entry.isEmpty() {
262 err = errors.New("could not resolve build entry")
263 return
264 }
265
266 if DEBUG && !analyzeMode {
267 ctx.logger.Debugf(`build(%s): Entry{main: "%s", module: %v, types: "%s"}`, ctx.esmPath.String(), entry.main, entry.module, entry.types)
268 }
269
270 isTypesOnly := strings.HasPrefix(ctx.pkgJson.Name, "@types/") || entry.isTypesOnly()
271 if isTypesOnly {
272 if analyzeMode {
273 return
274 }
275 err = ctx.transformDTS(entry.types)
276 if err != nil {
277 return
278 }
279 meta = &BuildMeta{
280 TypesOnly: true,
281 Dts: "/" + ctx.esmPath.PackageId() + entry.types[1:],
282 }
283 return
284 }
285
286 // css entry
287 if strings.HasSuffix(entry.main, ".css") {
288 if analyzeMode {
289 return
290 }
291 meta = &BuildMeta{CSSEntry: entry.main}
292 return
293 }
294
295 // json module
296 if strings.HasSuffix(entry.main, ".json") {
297 if analyzeMode {
298 return
299 }
300 var jsonData []byte
301 jsonPath := path.Join(ctx.wd, "node_modules", ctx.esmPath.PkgName, entry.main)
302 jsonData, err = os.ReadFile(jsonPath)
303 if err != nil {
304 return
305 }
306 buffer := &bytes.Buffer{}
307 buffer.WriteString("export default ")
308 buffer.Write(jsonData)
309 err = ctx.storage.Put(ctx.getSavePath(), buffer)
310 if err != nil {
311 ctx.logger.Errorf("storage.put(%s): %v", ctx.getSavePath(), err)
312 err = errors.New("storage(put): " + err.Error())
313 return

Callers 2

BuildMethod · 0.95
analyzeSplittingMethod · 0.95

Calls 15

checkCanceledMethod · 0.95
resolveEntryMethod · 0.95
transformDTSMethod · 0.95
getSavePathMethod · 0.95
lexerMethod · 0.95
resolveDependencyMethod · 0.95
installMethod · 0.95
getImportPathMethod · 0.95
getBuildArgsPrefixMethod · 0.95
resolveDTSMethod · 0.95
getPkgFullPathMethod · 0.95
shouldBundleMethod · 0.95

Tested by

no test coverage detected