Подтвердить что ты не робот

Как автоматически копировать файлы из пакета в локальный каталог через postinstall npm script?

Я хочу автоматически скопировать определенные файлы из пакета npm в пользовательский локальный каталог после запуска

npm install my-package

Я могу установить их, объявив "files" внутри package.json. Проблема в том, что файлы не помещаются в локальный каталог. Поэтому мне нужно запустить postinstall script.

Но теперь я не знаю, где установлен пакет (возможно, выше дерева каталогов), поэтому как я могу надежно получить доступ к файлам и скопировать их в локальный каталог с помощью script?

локальном каталоге я имею в виду --- откуда я запускаю npm install my-package как пользователь, использующий пакет.)

UPDATE. Кажется, что postinstall script работает как npm процесс с домашним каталогом node_modules/my-package, поэтому я до сих пор не знаю, как получить доступ к домашнему каталогу пользователя, кроме наивного ../../.

4b9b3361

Ответ 1

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

Примечание. Если аргументы для разрешения имеют строки с нулевой длиной, вместо них будет использоваться текущий рабочий каталог.

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

Ответ 2

Я бы использовал shellscript/bash

-package.json

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

-postinstall.sh

#!/bin/bash

# go to YOUR_NEEDED_DIRECTORY .e.g "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