Published on

package.json中scripts的本质

package.json中scripts的本质

当我们用包管理器去执行devbuild等命令的时候,前提是package.json文件中的scripts需要有这个命令,那么这个命令到底做了什么事情呢?

前往node_modules中对应的包中的bin文件(以rsbuild为例)

#!/usr/bin/env node
import nodeModule from 'node:module';

// enable on-disk code caching of all modules loaded by Node.js
// requires Nodejs >= 22.8.0
const { enableCompileCache } = nodeModule;
if (enableCompileCache) {
  try {
    enableCompileCache();
  } catch {
    // ignore errors
  }
}

async function main() {
  const { __internalHelper, logger } = await import('../dist/index.js');
  const { runCli, prepareCli } = __internalHelper;

  prepareCli();

  try {
    runCli();
  } catch (err) {
    logger.error(err);
  }
}

main();

执行runCli这个函数

runCli中主要设置了rsbuild这个命令,创建了devbuildpreviewinspect等命令,绑定了通用的配置,对devpreview配置了服务器,并各自对各个命令进行action操作执行打包、运行开发服务器等操作。