我已经使用Netlify和git repo进行了持续的部署设置,但是到目前为止,无论我做什么,Netlify都不会npm-install
进行任何操作。当我下载部署的zip时,没有node_modules文件夹,我的站点无法访问node_modules,只是不存在。我从一个随机的npm软件包(破折号)开始尝试安装它,但到目前为止我什么都没有。
Netlify说它会自动运行npm install
。我尝试了没有构建命令,并且尝试将npm install
添加为构建命令,但都没有结果。
package.json:
{
"name": "netlify-test",
"version": "1.0.0",
"description": "stuff",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/electrovir/netlify-test.git"
},
"author": "electrovir",
"license": "MIT",
"bugs": {
"url": "https://github.com/electrovir/netlify-test/issues"
},
"homepage": "https://github.com/electrovir/netlify-test#readme",
"dependencies": {
"lodash": "^4.17.11"
}
}
HTML:
<!doctype html>
<html>
<head>
<title>
hi
</title>
<script src="node_modules/lodash/_apply.js"></script>
</head>
<body>
Why can't this find node_modules??
</body>
</html>
答案 0 :(得分:2)
花了好一会儿才知道,但是我发现当您拥有{{1时,Netlify确实将 npm install
放入您的存储库根目录或基本目录中}}。可以通过将 Build命令更改为类似package.json
并读取部署控制台输出(其中将列出ls
文件夹)来看到这一点。
但是,在运行 Build命令之后且在部署之前的某个时刻,此node_modules
被删除。因此,如果您使用与以下类似的内容作为 Build命令,则node_modules
可以复制到您的发布目录:
node_modules
这会将基本目录的内容复制到rm -rf dist && mkdir dist && rsync -rv * dist --exclude ./dist
中,我将其设置为我的 Publish目录,而忽略了dist
本身(它可以被复制到自身中)。最好将它作为npm脚本添加到./dist
中的package.json
中,作为您的 Build命令。
请注意,基本目录,构建命令和发布目录都在部署>部署设置下,或者在Netlify中设置>构建和部署。
感谢lastmjs协助您解决此问题。
答案 1 :(得分:0)
如果node_modules
在那里,那会很奇怪。如果且仅当存储库根目录中有package.json时(如果在netlify.toml中设置了package.json,否则Netlify的连续部署确实会为您运行npm install。但是,它还使用了部署目录之外的自定义npm目录(请参阅此处的设置:https://github.com/netlify/build-image/blob/master/run-build-functions.sh#L34),因为static site不需要部署base
浏览时间-仅在构建时。
Netlify部署的预期路径为:
node_modules
目录),或者在base
目录中组。如this article about the build settings at Netlify base
,Gemfile.lock
,package.json
或yarn.lock
中的任何一个/全部。
requirements.txt
存储在仓库中。其中许多将特定于构建环境的体系结构-本地计算机几乎肯定与Netlify的计算机不同。您将需要在构建时生成这些文件。node_modules
文件,或者使用gulp-cli处理.env
您可能遇到的情况需要其中一些/其中一个-例如function,或者甚至在您的静态站点上也可能需要其中一个文件-可以,可以将其明确地复制到发布目录中。但这不是常态:)