从依赖项中的 node_modules 复制文件
Copy file from node_modules in a dependency
我 模块 A 具有以下 postinstall
脚本:
"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
目录结构是:
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');
您可以使用 require.resolve()
将模块样式的字符串解析为文件路径。
我 模块 A 具有以下 postinstall
脚本:
"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
目录结构是:
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');
您可以使用 require.resolve()
将模块样式的字符串解析为文件路径。