Как выполнить две команды NPM, последовательно копируя файл в качестве последнего шага?

Я изменил свои сценарии package.json следующим образом (предложено этой публикацией и этот). Он работает и делает то, что ожидается.

...
"deploy": "ng build && echo Do not forget to copy web.config!", ...

Затем я попытался заменить эхо на копирование файла, подобного этому.

...
"deploy": "ng build && copy ./src/web.config ./dist", ...

Однако это не удается с ошибкой ниже.

''копировать' не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл.

Я знаю, что могу решить эту задачу с помощью кряхтения или глотания, но я хотел бы, чтобы это было просто, и посмотреть, возможно ли это. Это?

Я пытался окружить пути апострофами и даже запускал команду копирования как единую команду скрипта. Не повезло.


person Konrad Viltersten    schedule 16.08.2017    source источник
comment
как не получается? есть ли ошибка?   -  person n00dl3    schedule 16.08.2017
comment
@ n00dl3 Извините за это. Я вставил старую версию вопроса. Пожалуйста, ознакомьтесь с текущим. Что касается вашего вопроса - ошибка говорит о том, что такой команды более или менее нет.   -  person Konrad Viltersten    schedule 16.08.2017


Ответы (1)


copy не является допустимой командой bash. Вместо этого попробуйте использовать cp.

Вы можете написать скрипт nodejs, который просто копирует этот файл.

копировать.js

var fs = require('fs');
fs.createReadStream('./src/web.config')
    .pipe(fs.createWriteStream('./dist/web.config'));

...
"deploy": "ng build && node run ./copy.js .

Я запустил его с помощью M$-DOS COPY. Это также работает с использованием PowerShell с использованием Copy-Item.

Не забывайте, что вы должны использовать обратную косую черту в M$, которую вам также нужно экранировать.

"deploy": "COPY .\\a\\test .\\b\\test"
or
"deploy": "Copy-Item .\\a\\test .\\b\\test"

person Tom M    schedule 16.08.2017