【强迫症必备】干掉 NodeJS 项目 node_modules 和 package.json 单文件运行

C 2022-3-8 1349

我们在使用NodeJS的时候,总会出现node_modules目录和package.json配置文件,能把强迫症活活气死。

于是,我想了一些办法来干掉这两个恶心玩意,让项目可以单文件运行。

首先,项目不要使用NPM,也不要定义任何NPM方法,例如:npm run dev,npm run build,这类通通不要用!有人会问那项目怎么运行,这种一看就是NPM用多了的前端,连NodeJS基本原理都不知道。

NodeJS运行项目的方法:node a.js(a.js是我的项目主体文件)

其次,项目默认定义为CommonJS,而不作为Module运行。前者使用require引入外部模块,后者使用import引入外部模块。前者不需要package.json,后者则需要定义"type":"module"。

这就很明显,如果想避免package.json,则需要使用前者方法。我将项目中的模块引入代码改为:

const { createServer } = require('http');
const { readFileSync, readFile } = require('fs');

最后,移除万恶的node_modules文件夹,需要两个关键:

1. 安装外部模块时,使用 npm i -g 命令,全局安装至系统目录。

2. 引入文件夹时,使用 process.env.APPDATA 变量直接调用系统路径。

举例说我想引入 MongoDB 模块,则使用的代码为:

const { MongoClient, ObjectId } = require(process.env.APPDATA + '/npm/node_modules/mongodb');

至此,我们的项目目录就干净了,非常的完美!

顺便补充一句,如果IDE(VSCode)有下划线提示“文件可能转换为ES模块”,把扩展名改成.cjs强行指定为CommonJS就解决了。

最新回复 (1)
  • Kevin 2022-3-9
    2

    (感觉这东西是为了避免环境污染+提升移植性?

返回
发新帖