侧边栏壁纸
博主头像
MicroMatrix博主等级

曲则全,枉则直,洼则盈,敝则新,少则得,多则惑。是以圣人抱一为天下式。不自见,故明;不自是,故彰;不自伐,故有功;不自矜,故长。夫唯不争,故天下莫能与之争。古之所谓“曲则全”者,岂虚言哉!诚全而归之。

  • 累计撰写 80 篇文章
  • 累计创建 21 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

esbuild v19版本构建本地服务

蜗牛
2023-09-12 / 0 评论 / 0 点赞 / 7 阅读 / 3425 字 / 正在检测是否收录...

前言

本文主要是对文章vue3源码学-2-实现构建流程的一个补充。补充的内容为esbuild新升级的版本,即大于0.17版本构建的写法发生了巨大的改变。

下面是新的dev.js的内容,请根据自己的项目情况修改

// 这里用到了之前安装的minimist以及esbuild模块
const args = require("minimist")(process.argv.slice(2)) // node scripts/dev.js reactivity -f global
const { context } = require("esbuild");
// console.log(args)
const { resolve } = require('path');// node 内置模块

const format = args.f || 'global';// 打包的格式

const pkg = require(resolve(__dirname, `../package.json`));

// iife 立即执行函数 (function(){})();
// cjs node中的模块 module.exports
// esm 浏览器中的esModule模块 import
const outputFormat = format.startsWith("global") ? 'iife' : format == "cjs" ? "cjs" : "esm";

//打包之后文件存放地方
const outFile = resolve(__dirname, `../dist/MusicPlayer.${format}.js`)

const plugins = [{
  name: 'music-player',
  setup(build) {
    let count = 0;
    build.onEnd(result => {
      if (count++ === 0) console.log('first build~~~~~');
      else console.log('subsequent build');
    });
  },
}];
context({
  entryPoints: [resolve(__dirname, `../src/index.ts`)],
  outfile: outFile, //输出的文件
  bundle: true, //把所有包全部打包到一起
  sourcemap: true,
  format: outputFormat, //输出格式
  globalName: pkg.buildOptions?.name, //打包全局名,上次在package.json中自定义的名字
  platform: format === "cjs" ? "node" : "browser",//项目运行的平台
  plugins
}).then((ctx) => {
  ctx.serve({
    servedir: '.',
    port: 8002,
  })
  return ctx
}).then(ctx => ctx.watch())
0

评论区