什么是脚本?
脚本是可以直接从终端运行的代码。
这是可运行的代码
这是一个最小的节点脚本
const run = async () => {
};
(async () => {
try {
await run();
} catch (err) {
// eslint-disable-next-line
console.log(err);
process.exit(1);
}
process.exit(0);
})();
我们如何在Woovi Monorepo上运行脚本?
我们以许多方式运行节点脚本:
节点路径/to/myScript.ts
yarn es Path/to/myScript.ts
纱W路径/to/myScript.ts
yarn es
与node -r esbuild-register
相同,它使用esbuild
yarn w
使用webpack
我们使用Esbuild和WebPack能够在MonorePo中运行任何代码,使用TypeScript。
这会导致很难检测文件是否作为脚本的入口点运行。
如何检查节点文件是否作为脚本运行?
我们将!module.parent
用于节点和esbuild,但是在使用webpack时,我们在运行最终的webpack捆绑代码时注入webpack_entry。
import path from 'path';
const cwd = process.cwd();
export const isMainScript = (require, module, filename: string) => {
// webpack_entry is the real
if (process.env.WEBPACK_ENTRY) {
const fullEntry = path.join(cwd, process.env.WEBPACK_ENTRY);
const fullFilename = path.join(cwd, filename);
if (fullEntry === fullFilename) {
return true;
}
return false;
}
if (!module.parent) {
return true;
}
// eslint-disable-next-line
console.log('not main script, check your script code');
return false;
};
综上所述
我们需要检测文件是否作为脚本运行,以避免在共享某些代码的情况下运行文件脚本代码。
深入兔子洞,让我们改善Woovi的运行脚本的DX
woi
Woovi是一家创业公司,使购物者能够按照自己的意愿付款。为了实现这一目标,Woovi为商人提供即时付款解决方案接受订单。
如果您想与我们合作,我们是hiring!
照片