Запустите `create-реагировать-приложение` из Common Lisp - PullRequest
3 голосов
/ 23 января 2020

Предполагая, что в локальной системе установлено create-react-app (npm i -g create-react-app), я хочу запустить его с параметрами из файла Common Lisp. Какой лучший способ сделать это?

1 Ответ

4 голосов
/ 23 января 2020

Насколько я знаю, пригодное решение - uiop: run-program , так как ваш дистрибутив cl, вероятно, включает asdf.

CL-USER> (uiop:run-program "create-react-app" :output t :error-output t)
;;Please specify the project directory:
;;  create-react-app <project-directory>

;;For example:
;;  create-react-app my-react-app

;;Run create-react-app --help to see all options.
;;; Debugger entered on #<UIOP/RUN-PROGRAM:SUBPROCESS-ERROR {10018B83A3}>

, это сообщение об ошибке , так как сам create-react-app делает это без аргументов.

(uiop:run-program "create-react-app my-new-shiny-app" :output t :error-output t)

завершается успешно и создает приложение в вашем cwd.

, вы можете заключить его в такую ​​функцию, например:

(defun create-react-app (app-path &key verbose info scripts-version template use-npm use-pnp typescript)
  (let ((cmd (format nil "create-react-app ~a ~
                            ~@[--verbose~*~] ~
                            ~@[--info~*~] ~
                            ~@[--scripts-version ~a~] ~
                            ~@[--template ~a~] ~
                            ~@[--use-npm~*~] ~
                            ~@[--use-pnp~*~] ~
                            ~@[--typescript~*~]"
                     app-path verbose info scripts-version template use-npm use-pnp typescript)))
    (format t "executing shell command: ~a~%" cmd)
    (uiop:run-program cmd :output t :error-output t)))

(create-react-app "my-new-shiny-app" :template "cra-template-quickstart-redux" :use-npm t)

не проверили его полностью, но он должен работать.

...