Javascript 从依赖项中的节点_模块复制文件

Javascript 从依赖项中的节点_模块复制文件,javascript,node.js,module,nvm,Javascript,Node.js,Module,Nvm,我已使用以下安装后脚本模块A: "postinstall": "cp node_modules/dep-module/file.txt lib/file.txt" 运行npm install后,可以找到并复制文件: module-A |- node_modules |- dep-module |- file.txt 在我从模块B导入模块A之前,这一切都很顺利: "module-a": "0.0.1" 现在,由于我从模块B执行npm安装,dir结构是: module-B |

我已使用以下
安装后脚本模块A

"postinstall": "cp node_modules/dep-module/file.txt lib/file.txt"
运行
npm install
后,可以找到并复制文件:

module-A
|- node_modules
   |- dep-module
      |- file.txt
在我从模块B导入模块A之前,这一切都很顺利:

"module-a": "0.0.1"
现在,由于我从模块B执行
npm安装
,dir结构是:

module-B
|- node_modules
   |- module-A
   |- dep-module
      |- file.txt
在同一路径中找不到
file.txt
,应改为:

"postinstall": "cp ../dep-module/file.txt lib/file.txt"
解决此问题的最佳选择是什么?

目前我已经破解了一个脚本,simple会进行路径检查,以查看是否存在
节点\ u modules
dir,但我更喜欢一个可以避免节点脚本的解决方案

const getModulePath = module =>
  fs.existsSync(path.resolve('./node_modules')) ? `./node_modules/${module}` : `../${module}`;

fs.copy(`${getModulePath('dep-module')}/file.txt`, 'dist/file.txt');

您可以使用
require.resolve()
将模块样式字符串解析为文件路径。

您可以运行一个节点脚本,该脚本执行
require.resolve('dep-module/file.txt')
@SLaks。我已经完成了,但我正在寻找一个不需要外部脚本的解决方案。。。如果有的话。我将添加我当前的解决方案。哦,不完全是我所做的。。。刚刚注意到那里的
解析
!不管怎样,我仍然需要这个节点脚本,对吗?谢谢,这就是我一直在寻找的!现在我可以在
postinstall
“postinstall”:“cp`node-p”require.resolve('dep-module/file.txt')“`./lib/file.txt”
@SLaks如果你介意提出一个答案,那么我就可以关闭这个,这将是超级棒的