如何通过postinstall npm脚本自动将文件从软件包复制到本地目录?

我想在运行后自动将某个文件从npm包复制到用户的本地目录

npm install my-package

我可以通过在package.json声明"files"来安装它们。 问题是—文件没有放在本地目录中。 所以我需要运行postinstall脚本。

但是现在我不知道软件包的安装位置(可能是更高的目录树),那么我怎样才能可靠地访问这些文件并通过脚本将它们复制到本地目录?

(通过本地目录我的意思是—从我运行npm install my-package 作为用户使用包。)

UPDATE。 看来postinstall脚本作为npm拥有的进程运行,主目录是node_modules/my-package ,所以我仍然不知道如何访问用户的主目录以外的天真../../

var cwd = require('path').resolve();

注意:如果要parsing的参数具有零长度的string,则将使用当前工作目录而不是它们。

https://nodejs.org/api/path.html

我会使用shellscript / bash

-package.json

 "scripts": "postinstall": "./postinstall.sh", 

-postinstall.sh

 #!/bin/bash # go to YOUR_NEEDED_DIRECTORY .eg "dist" cd YOUR_NEEDED_DIRECTORY # copy each file/dir to user dir(~/) for node in `ls` do cp -R $node ~/$node done 

别忘了!

 chmod +x postinstall.sh