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如果你介意提出一个答案,那么我就可以关闭这个,这将是超级棒的