介绍一个自制的适配ESM在node 环境中的工具 -- uunode
Posted suedarsam
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了介绍一个自制的适配ESM在node 环境中的工具 -- uunode相关的知识,希望对你有一定的参考价值。
一、概述
先看一段代码:
// index.js
import createMathOperation from './.internal/createMathOperation.js'
const add = createMathOperation((augend, addend) => augend + addend, 0)
console.log(add(6, 4));
export default add
当我们在终端执行 node index.js
时,我们可以得到一个报错:
也就是说,我们不可以直接运行这段包含 ESM
的代码。
Node verison 13.2.0
起开始正式支持 ES Modules
特性,有两种方法可以应用:
- 在
package.json
中设置"type": "module"
- 将文件后缀改变为
mjs
第一种方法使用过 single-spa
的同学应该觉得眼熟,single-spa
采用第一个方法导入子模块。
根据第二个方法,为了便利化调试,我开发了一个命令行工具—— uunode,它会将 js
文件在不覆盖原文件的情况下转化为 mjs
, 并执行相应的mjs
文件,并返回结果。
二、安装
npm
使用:
npm install uunode -g
yarn
使用:
yarn add uunode -g
(linux
显示没有权限的话请在前面加上 sudo, 即 sudo npm install uunode -g
或者 sudo yarn add uunode -g
)
三、使用示例
uunode [example.js]
如示例所示,当我们运行 uunode [example.js]
时,它会产生一个 .uunode
的文件夹,里面储存着将 mjs
文件(默认不保留文件,你可以加 -k
参数保留文件)。并执行 node .uunode/example.js
返回相应的结果。
你还可以使用 uunode [example.js] -s
去掉 console
。
参数支持项:
参数值 | 含义 |
---|---|
-s | 去除 console |
-k | 保留生产后的菜单 |
四、未来
在探索如何写 uunode
的过程中发现了 Deno,也是由 nodejs
的作者Ryan Dahl开发的。
node
不能处理 ESM
模块的问题,将在 Deno
解决。更多关于 deno 的内容,请参考这篇文章。
五、更多
以上是关于介绍一个自制的适配ESM在node 环境中的工具 -- uunode的主要内容,如果未能解决你的问题,请参考以下文章
介绍一个自制的适配ESM在node 环境中的工具 -- uunode
介绍一个自制的适配ESM在node 环境中的工具 -- uunode