Как добавить пользовательский script в файл package.json, который запускает файл javascript?
Я хочу иметь возможность выполнить команду script1
в каталоге проекта, который будет запускать node script1.js
.
script1.js
- это файл в том же каталоге. Команда должна быть специфичной для каталога проекта, а это означает, что если я отправлю кому-то еще папку проекта, они смогут выполнить ту же команду.
До сих пор я пытался добавить:
"scripts": {
"script1": "node script1.js"
}
в мой файл package.json, но когда я пытаюсь запустить script1
, я получаю следующий вывод:
zsh: command not found: script1
Кто-нибудь знает шаги, необходимые для добавления вышеупомянутого скрипта в папку проекта?
* Примечание: команда не может быть добавлена в профиль bash (не может быть командой, специфичной для компьютера)
Пожалуйста, дайте мне знать, если вам нужны какие-либо разъяснения.
Ответы
Ответ 1
Пользовательские скрипты
npm run-script <custom_script_name>
или
npm run <custom_script_name>
В вашем примере вы хотели бы запустить npm run-script script1
или npm run script1
.
См. https://docs.npmjs.com/cli/run-script
Скрипты жизненного цикла
Node также позволяет запускать собственные сценарии для определенных событий жизненного цикла, например, после запуска npm install
. Их можно найти здесь.
Например:
"scripts": {
"postinstall": "electron-rebuild",
},
Это выполнило бы electron-rebuild
после команды npm install
.
Ответ 2
Я создал следующее, и оно работает в моей системе. Пожалуйста, попробуйте это:
package.json:
{
"name": "test app",
"version": "1.0.0",
"scripts": {
"start": "node script1.js"
}
}
script1.js:
console.log('testing')
Из командной строки выполните следующую команду:
npm start
Дополнительный вариант использования
В моем файле package.json обычно есть следующие сценарии, которые позволяют мне просматривать мои файлы на предмет машинописных сборок, сборок sass и запуска сервера.
"scripts": {
"start": "concurrently \"sass --watch ./style/sass:./style/css\" \"npm run tsc:w\" \"npm run lite\" ",
"tsc": "tsc",
"tsc:w": "tsc -w",
"lite": "lite-server",
"typings": "typings",
"postinstall": "typings install"
}
Ответ 3
Шаги ниже:
В package.json добавьте:
"bin":{
"script1": "bin/script1.js"
}
Создайте папку bin
в каталоге проекта и добавьте файл runScript1.js
с кодом:
#! /usr/bin/env node
var shell = require("shelljs");
shell.exec("node step1script.js");
Запустите npm install shelljs
в терминале
Запустите npm link
в терминале
Из терминала вы можете запустить script1
, который запустит node script1.js
Ссылка: http://blog.npmjs.org/post/118810260230/building-a-simple-command-line-tool-with-npm
Ответ 4
Пример:
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build --prod",
"build_c": "ng build --prod && del \"../../server/front-end/*.*\" /s /q & xcopy /s dist \"../../server/front-end\"",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
Как видите, скрипт build_c строит угловое приложение, затем удаляет все старые файлы из каталога, а затем, наконец, копирует полученные файлы сборки.
Ответ 5
Допустим, в сценариях вы хотите запустить 2 команды одной командой:
"scripts":{
"start":"any command",
"singleCommandToRunTwoCommand":"some command here && npm start"
}
Теперь иди к своему терминалу и беги туда npm run singleCommandToRunTwoCommand
.