我已经得到了持续部署的设置与Netlify和混帐回购协议,但到目前为止,无论我做什么,Netlify不npm-install
ing什么。当我下载了部署的拉链有没有node_modules文件夹,我的网站不能访问node_modules,它只是不存在。我已经开始与随机NPM包(lodash)设法得到它安装,但我已经没有什么至今。
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>
过了一段时间摸不着头脑,但我发现,Netlify确实npm install
到您的回购根或基本目录,当你有一个package.json
。这可以通过改变build命令类似ls
和阅读部署控制台输出中看到(会有上市node_modules
文件夹)。
然而,在运行生成命令之后,部署之前的一些点,这node_modules
被删除。因此,如果你会使用类似以下内容的作为构建命令,node_modules
可以复制到你的发布目录:
rm -rf dist && mkdir dist && rsync -rv * dist --exclude ./dist
此副本基本目录内容到dist
,我已经设置为我的发布目录,而忽略./dist
本身(它不能被复制到自身)。这将会是更好的,如果这是作为一个NPM脚本package.json
与npm run <script name>
添加为您生成命令。
需要注意的是基本目录,生成命令,并发布目录都在部署>部署设置或设置>构建与在Netlify部署。
由于lastmjs与搞清楚了这一点帮助。
如果node_modules
在那里这将是奇怪的。 Netlify的持续部署并运行NPM为您安装,当且仅当出现在你的仓库的根目录中的package.json(或代替在base
目录,如果你设置一个的netlify.toml。然而,它也采用了自定义的NPM目录是部署目录之外(看看它是如何设置的位置:https://github.com/netlify/build-image/blob/master/run-build-functions.sh#L34),因为在部署node_modules
应该没有必要在浏览时间static site - 仅在构建时。
对于Netlify部署意图路径是:
base
目录(如果没有base
目录在UI或在toml文件中设置),如果设置。这可能是任何/所有Gemfile.lock
,package.json
,yarn.lock
,或requirements.txt
作为在this article about the build settings at Netlify解释node_modules
存储在回购协议。其中很多人将是具体的编译环境的架构 - 和你的本地计算机几乎可以肯定比Netlify的不同。你会想在构建时生成的。.env
同时建设,或者你使用gulp-cli处理您的Gulpfile.js
可能您需要他们的一些/个的情况 - 例如,一个function或者你可以从需要其中的一个文件甚至在你的静态网站 - 这很好,随时将它复制到发布目录明确。但是,这并不是常态:)