运行 在 Netlify 的父目录中嵌套 npm 脚本?
Run nested npm script from parent directory in Netlify?
我正在尝试在 Netlify 上设置持续部署。我链接了我的 Github 帐户,所以我现在需要设置我的构建命令:
复杂的是我的 package.json 和构建命令(来自 create-react-app)不在项目根目录中。相反,它的 1 个文件夹很深:
react // this is a folder
-package.json // has build commands for React
server // this is a folder
-package.json // has build commands for my backend as a service
因为我使用后端作为服务,所以我不需要部署到 Netlify 的 'server' 文件夹中的任何内容,只需要 'react' 文件夹的内容。
我可以从项目根目录 运行 react/package.json 中的命令吗?
在我的本地机器上,我可以 运行 来自根目录的构建命令:
{
"scripts": {
"netlify": "cd ./react && npm run build"
}
}
但在 Netlify 上出现错误:
9:56:31 AM: Executing user command: npm run netlify
9:56:31 AM: > @ netlify /opt/build/repo
9:56:31 AM: > cd ./react && npm run build
9:56:32 AM: > testproject@0.0.1 build /opt/build/repo/react
9:56:32 AM: > npm-run-all build-css build-js
9:56:32 AM: sh: 1: npm-run-all: not found
9:56:32 AM: npm ERR! file sh
9:56:32 AM: npm ERR! code ELIFECYCLE
9:56:32 AM: npm ERR! errno ENOENT
9:56:32 AM: npm ERR! syscall spawn
9:56:32 AM: npm ERR! testproject@0.0.1 build: `npm-run-all build-css build-js`
9:56:32 AM: npm ERR! spawn ENOENT
9:56:32 AM: npm ERR!
9:56:32 AM: npm ERR! Failed at the testproject@0.0.1 build script.
9:56:32 AM: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
9:56:32 AM: npm WARN Local package.json exists, but node_modules missing, did you mean to install?
9:56:32 AM: npm ERR! A complete log of this run can be found in:
9:56:32 AM: npm ERR! /opt/buildhome/.npm/_logs/2018-03-01T02_56_32_022Z-debug.log
9:56:32 AM: npm ERR! code ELIFECYCLE
9:56:32 AM: npm ERR! errno 1
9:56:32 AM: npm ERR! @ netlify: `cd ./react && npm run build`
9:56:32 AM: npm ERR! Exit status 1
免责声明:我为 Netlify 工作
如果有 /package.json,我们的构建过程只会为您 'npm install'。我认为您可能可以使用此构建命令成功构建:
cd ./react && npm install && npm run build
...假设您在 package.json 中有 npm-run-all
:)
但这并不是解决问题的最佳方法。最佳做法是改为使用 netlify.toml
file 为您的构建设置 base
。我们将在开始构建之前 cd 到这个目录,然后我们将选择您的 package.json 并自动进行安装,这样您的构建命令将简化为 npm run build
,以及任何克隆的人您的回购协议也将在 Netlify 上成功设置:)
[build]
base = "react"
...就是您在该文件中所需要的全部内容。
我正在尝试在 Netlify 上设置持续部署。我链接了我的 Github 帐户,所以我现在需要设置我的构建命令:
复杂的是我的 package.json 和构建命令(来自 create-react-app)不在项目根目录中。相反,它的 1 个文件夹很深:
react // this is a folder
-package.json // has build commands for React
server // this is a folder
-package.json // has build commands for my backend as a service
因为我使用后端作为服务,所以我不需要部署到 Netlify 的 'server' 文件夹中的任何内容,只需要 'react' 文件夹的内容。
我可以从项目根目录 运行 react/package.json 中的命令吗?
在我的本地机器上,我可以 运行 来自根目录的构建命令:
{
"scripts": {
"netlify": "cd ./react && npm run build"
}
}
但在 Netlify 上出现错误:
9:56:31 AM: Executing user command: npm run netlify
9:56:31 AM: > @ netlify /opt/build/repo
9:56:31 AM: > cd ./react && npm run build
9:56:32 AM: > testproject@0.0.1 build /opt/build/repo/react
9:56:32 AM: > npm-run-all build-css build-js
9:56:32 AM: sh: 1: npm-run-all: not found
9:56:32 AM: npm ERR! file sh
9:56:32 AM: npm ERR! code ELIFECYCLE
9:56:32 AM: npm ERR! errno ENOENT
9:56:32 AM: npm ERR! syscall spawn
9:56:32 AM: npm ERR! testproject@0.0.1 build: `npm-run-all build-css build-js`
9:56:32 AM: npm ERR! spawn ENOENT
9:56:32 AM: npm ERR!
9:56:32 AM: npm ERR! Failed at the testproject@0.0.1 build script.
9:56:32 AM: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
9:56:32 AM: npm WARN Local package.json exists, but node_modules missing, did you mean to install?
9:56:32 AM: npm ERR! A complete log of this run can be found in:
9:56:32 AM: npm ERR! /opt/buildhome/.npm/_logs/2018-03-01T02_56_32_022Z-debug.log
9:56:32 AM: npm ERR! code ELIFECYCLE
9:56:32 AM: npm ERR! errno 1
9:56:32 AM: npm ERR! @ netlify: `cd ./react && npm run build`
9:56:32 AM: npm ERR! Exit status 1
免责声明:我为 Netlify 工作
如果有 /package.json,我们的构建过程只会为您 'npm install'。我认为您可能可以使用此构建命令成功构建:
cd ./react && npm install && npm run build
...假设您在 package.json 中有 npm-run-all
:)
但这并不是解决问题的最佳方法。最佳做法是改为使用 netlify.toml
file 为您的构建设置 base
。我们将在开始构建之前 cd 到这个目录,然后我们将选择您的 package.json 并自动进行安装,这样您的构建命令将简化为 npm run build
,以及任何克隆的人您的回购协议也将在 Netlify 上成功设置:)
[build]
base = "react"
...就是您在该文件中所需要的全部内容。