Для кроссплатформенного решения используйте node.js, и он встроен fs.readFileSync(...)
и fs.writeFileSync(...)
. Таким образом, не имеет значения, в какой оболочке выполняется ваш скрипт npm (sh
, cmd.exe
, bash
, bash.exe
, pwsh
, ...
)
Чтобы достичь этого, рассмотрите одно из следующих двух решений - по сути, это одни и те же разные способы применения.
Решение A. Использование отдельного скрипта node.js
Создайте следующий скрипт, давайте сохраним его как prepend.js в корне каталога проекта, то есть на том же уровне, где находится package.json .
prepend.js
const fs = require('fs');
const filepath = './OarBookmarklet/oar.min.js';
const data = fs.readFileSync(filepath);
fs.writeFileSync(filepath, 'javascript:' + data);
package.json
Определите скрипт oar:prepend-javascript
npm в package.json следующим образом: *
"scripts": {
...
"oar:prepend-javascript": "node prepend",
...
},
Примечание: Над node.js вызывает скрипт и выполняет требуемую задачу. Если вы решите сохранить prepend.js в другом каталоге, чем вышеупомянутый, убедитесь, что вы указали правильный путь к нему, то есть "oar:prepend-javascript": "node ./some/other/path/to/prepend.js"
Решение B. Вставьте скрипт node.js в package.json
Кроме того, вы можете встроить содержимое prepend.js в свой скрипт npm, что исключает использование отдельного .js
файла.
package.json
Определите сценарий oar:prepend-javascript
в package.json следующим образом:
"scripts": {
...
"oar:prepend-javascript": "node -e \"const fs = require('fs'); const fp = './OarBookmarklet/oar.min.js'; const d = fs.readFileSync(fp); fs.writeFileSync(fp, 'javascript:' + d);\""
...
},
Примечание: Здесь опция командной строки nodejs -e
используется для оценки встроенного JavaScript.