通过nodejs修改node_modules中的源码

这篇具有很好参考价值的文章主要介绍了通过nodejs修改node_modules中的源码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在开发项目时,当node_modules中的默认配置不满足当前项目需求时,就需要对node_modules中相应的源码进行修改。但如果直接操作源码进行手动修改,代码不会同步到仓库中,当其他人拉取代码进行开发时,或者执行了npm install后源码依旧是默认配置。而此时则可以通过nodejs对源码进行操作,可以满足当前需求。

第一步:创建用来存放修改后内容的文件目录

创建文件夹change_modules,用来存放修改后的文件内容,但修改后的文件目录需要和node_modules中被修改的文件目录一致。例如被修改的文件xmllint.js所在目录是:node_modules/@wepy/cli/core/util/xmllint.js,则新建的文件目录应当为:change_modules/@wepy/cli/core/util/xmllint.js,如图

通过nodejs修改node_modules中的源码

第二步:修改内容

只需将被修改的文件中的所有内容粘贴到change_modules中对应的目录中,然后对需要更改的地方进行修改。

第三步:执行复制 | 替换

新建change_modules.js文件,此文件中存放的是文件替换的相关语法

const fs = require('fs')
const path = require('path')

// 将 change_modules 内的文件覆盖在node_modules中
const REAL_NODE_MODULES = path.resolve('./node_modules') // 旧node_modules
const MY_NODE_MODULES = path.resolve('./change_modules') // 新node_modules
copy(MY_NODE_MODULES, REAL_NODE_MODULES)

/**
*@param{string}需要复制的目录、文件
*@param{string}复制到指定的目录、文件
*@param{function}每次复制前,都会经过一次filterFn,若返回true,则复制。
*/
function copy(origin, target, filterFn = () => true) {
  if (fs.statSync(origin).isDirectory()) {
    if (!fs.existsSync(target)) {
      fs.mkdirSync(target)
    }
    fs.readdirSync(origin).forEach(originName => {
      const originFilePath = path.resolve(origin, originName)
      const targetFilePath = path.resolve(target, originName)
      copy(originFilePath, targetFilePath, filterFn)
    })
  } else if (filterFn(origin, target)) {
    //执行替换
    fs.copyFileSync(origin, target)
  }
}

第四步:修改package.json

在package.json中添加执行change_modules.js的语法,使得项目运行前执行change_modules.js替换相应文件,如图: 

通过nodejs修改node_modules中的源码

执行以上操作后,运行项目则大功告成!

相关nodejs语法详解

require('fs') :fs模块为nodejs的核心模块之一,主要处理文件的读写、复制、删除、重命名等操作。当需要使用该模块时,需要先导入该文件。

path.resolve(): 该方法将路径/路径段解析为绝对路径。

fs.statsync(path):接收一个path变量,可获取到路径的详细信息。

isDirectory():判断是否是目录,目录返回true,文件返回false。

fs.existsSync(path):检测指定路径是否存在。

fs.mkdirSync(path):用于创建目录。

fs.readdirSpath(path):获取指定目录下所有文件名称。

fs.copyFileSpath(beforePath,newPath):用于将文件从源路径同步复制到目标路径。文章来源地址https://www.toymoban.com/news/detail-448070.html

到了这里,关于通过nodejs修改node_modules中的源码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue修改node_modules打补丁步骤和注意事项

    当我们使用 npm 上的第三方依赖包,如果发现 bug 时,怎么办呢? 想想我们在使用第三方依赖包时如果遇到了bug,通常解决的方式都是绕过这个问题,使用其他方式解决,较为麻烦。或者给作者提个issue,然后等待作者的修复,等待的时间不可控。那么这时候是不是就可以借助

    2024年02月04日
    浏览(58)
  • node_modules插件代码修改,如何快速修改防止npm install安装覆盖代码

    有些组件不满足业务时咱们只能修改插件的源码: 直接在项目的node_modules下找到插件的源码直接修改; 优点:简单直接、快速见效; 缺点:不能持久化,一旦重新npm install安装就失效;不方便团队成员使用修改后的代码; 去github上fork代码到自己的仓库进行修改,并将自己修

    2024年02月09日
    浏览(57)
  • 深入浅出Node.js中的node_modules

    在Node.js中, node_modules 是一个特殊的目录,通常用来存放项目所依赖的 npm 包及其相关依赖,以供应用程序在运行时动态加载所需的模块和库文件。 当使用 npm 或者 yarn 等包管理工具安装npm包时,会将相关依赖包下载并保存在项目的 node_modules 目录下,以便于在应用程序中引用

    2024年02月06日
    浏览(49)
  • node修改版本、npm修改版本、yarn无法加载文件、node_modules\sharp: Command failed解决方法

    1、node修改版本 步骤1:从node官网下载node压缩包或者exe文件 如果是下载的是exe文件就直接找到原来的node.exe文件替换掉就可以了,环境变量配置不变 如果是下载的node压缩包,需要解压后,修改本地的环境变量配置(查看步骤2) 找到对应要下载的版本,这里我选择的10 相对应

    2024年02月13日
    浏览(62)
  • git配置修改.gitignore不上传node_modules文件目录到gitee码云

    如果创建的vue或者uni项目,自动会有依赖包node_modules,如果不去设置.gitignore,那么会默认将该文件夹下面所有的文件进行上传,这样整个包非常大非常碎,别人使用起来很麻烦,正常来讲只要把主要文件下载下来,其他人只需要npm i一下就行了,那么怎么解决那。 第一行就是

    2024年02月13日
    浏览(59)
  • Error: Cannot find module E:\nodejs\node_modules\npm\bin\npm-cli.js

    在用node开发服务器端的时候,发现用npm下载一个插件,成功之后,再用npm命令进行相关操作,报错了Error: Cannot find module E:nodejsnode_modulesnpmbinnpm-cli.js。 这个错误翻译过来就是说:找不到nodejsnode_modulesnpmbinnpm-cli.js这个路径对应的文件了,跑我的E盘看的时候,确实npm文件

    2024年02月08日
    浏览(67)
  • vscode设置可以搜索包含node_modules中的文件

    步骤3中删除掉node_modules,再搜索的时候,node_modules的匹配到代码也会展示出来了。 如果不想要被搜索文件包含node_modules,再添加上就可以。  

    2024年02月16日
    浏览(43)
  • npm命令删除开发项目中的node_modules文件夹

    1.使用rimraf: 2.使用npx: 3.使用npm自带的命令: 如果你只是想卸载某个特定的依赖包(比如nodemon),可以使用npm uninstall命令。如果依赖包被列在package.json文件的devDependencies中,则需要使用–save-dev参数 在npm中,也可以使用npm rm命令删除node_modules目录。该命令用于从本地文件

    2024年02月05日
    浏览(59)
  • nvm安装node后,报错Cannot find module ‘C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js‘

    问题描述 nvm安装node后,也会自动安装npm工具,但是在提示安装完成之后,使用npm相关命令时,会报如下错误 Error: Cannot find module \\\'C:Program Filesnodejsnode_modulesnpmbinnpm-cli.js\\\' 原因: 可以查看当前node版本  node -v,如v14.18.1,然后去nvm安装地址中找C:Users10153615AppDataRoamingnvm,

    2024年04月13日
    浏览(81)
  • 修改node_modules中安装的依赖(如第三方ui组件样式)并在下次安装时保留

    场景:需要修改安装的某个ui库的样式或者其他依赖,直接去node_modules中修改后,重新安装,或者其他小伙伴的电脑上并不能同时修改 方案:用patch-package 可以保留修改 步骤一 安装 patch-package — npm i patch-package --save 步骤二 配置package.json script加上‘‘postinstall’’:“patch-

    2024年02月08日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包