从依赖项中的node_modules复制文件

时间:2017-11-21 22:42:02

标签: javascript node.js module nvm

我使用以下postinstall脚本模块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 install,所以dir结构是:

module-B
|- node_modules
   |- module-A
   |- dep-module
      |- file.txt

file.txt无法在同一路线中找到,而应该是:

"postinstall": "cp ../dep-module/file.txt lib/file.txt"

解决此问题的最佳选择是什么?

目前我已经攻击了一个简单的路径检查以查看是否有node_modules目录的脚本,但我更倾向于一个可以避免节点脚本的解决方案......

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

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

1 个答案:

答案 0 :(得分:1)

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