我已经开始学习古普和Webpack,有一件事没有一个教程是.当您的项目完成并准备部署时-您如何处理/对所有的dev依赖项发生了什么?
node_modules文件夹本身是巨大的,我假设您没有将它上传到您的web服务器(或者您可能上传了)?但是,这是否意味着您从使用SASS/minification之类的东西中获得的所有好处只能在您的localhost项目上使用,因此只有完成的文件才会被部署(这意味着如果您需要进行任何小的更改,就必须在站点上实时编辑精简的代码等)。
学习过程的这一部分比我到目前为止在网络开发中所经历的任何事情都更难找到信息。我也认为这是很糟糕的,没有一个主要的学习图书馆(琳达,树屋等)在教程的末尾讨论这个问题。就像,恭喜你建立了一个你可以上传的网站。好的,但是我该如何处理所有依赖项中的数百个文件呢?我是否正常上传他们作为网站的一部分,如果不这样做,我如何防止这一点或npm是否自动阻止?
任何指导/解释都会令人惊奇。
艾米丽
发布于 2017-12-30 06:01:27
部署项目有许多不同的方法。它所基于的技术、团队规模、项目规模、项目重要性以及许多其他因素都是决定它应该如何完成的重要因素。我不能深入探讨大型项目是如何完成的,因为这本身就是一个领域,但我可以给你一些关于如何开始的建议。
在部署代码时,通常可以选择四种策略:
在服务器上构建
使用此策略,您可以将存储库中的所有内容上载到服务器。所谓存储库,我指的是源代码回购,而不是整个项目文件夹。忽略的文件和文件夹(在.gitignore中,如果使用git)不会上传,这意味着您不会上传node_modules或git生成的文件。我假设您没有使用版本控制跟踪这些文件和文件夹。上传完文件后,您可以在服务器上运行npm -只=和gulp。
当您在启用生产模式的情况下运行npm安装时,它只下载并安装依赖项。devDependencies被跳过。您可能会想,您如何运行gulp而不安装它。那么,您必须将所有与吞咽相关的模块移到依赖项部分。这同样适用于你在吞咽文件中使用的模块,比如babel和webpack。
应用程序应该被设置为服务于gulp制作的文件。如果您使用的是Express,而gulp生成的文件位于一个名为dist的文件夹中,则如下所示:
app.use(express.static(path.join(__dirname, 'dist')));
当您使用云中托管提供商(如AWS、ElasticBean秸秆或Heroku )时,此构建过程通常是自动的。例如,要部署到Heroku,您可以将回购中的分支推送到Heroku上的远程存储库。然后Heroku将自动运行postinstall,然后运行在package.json中定义的postinstall脚本。如果将postinstall脚本设置为如下所示:
"scripts": {
"start": "node app.js",
"postinstall": "gulp"
}
当您正在推送更改时,它将自动为您运行gulp。然后,工作流包括在本地进行更改,提交代码,并将更改推送到Heroku。Heroku将处理国家预防机制和吞咽的事情。在构建完成后,它还将重新启动应用程序。弹力豆柄相似。
我会推荐这个策略。它与持续集成很好地工作。AWS和Heroku也有免费的层,因此您可以随意地在那里进行实验。
在部署和上载node_modules和生产文件之前进行构建
您还可以选择在部署之前构建所有内容。上面提到的构建过程有两个步骤:在服务器上运行npm以创建node_modules,然后在服务器上运行gulp来创建生产文件。
对于这个策略你
在这种情况下,您不会在服务器上运行npm、安装或吞食。相反,您提供所需的所有文件。不过,我从没见过这样的情况。对于我提到的主机提供商来说,这不太好,因为他们希望自己运行npm安装。
仅在部署和上载生产文件之前进行构建
在部署期间没有在服务器上运行npm安装,就像上面的策略中提到的那样,并不常见。然而,跳过服务器上的吞咽步骤是很常见的。与其将所有的gulp模块都放在依赖项中,不如将它们保存在devDependencies中。你现在:
这是相当容易做到的弹性豆茎,例如。您所要做的就是上传一个带有生产文件和package.json的zip文件,它将在上传完成后为您自动运行npm安装。安装完成后,它也将启动应用程序。
使用容器
这种策略使用诸如Docker这样的技术来创建一个容器,其中包含运行Node所需的一切。这意味着OS、Node、npm、您的代码等等。然后,您将容器上传到接受容器的托管解决方案,比如AWS。这并不难,但我建议您首先习惯“普通”部署方法。
您提到了对服务器上的代码做一些小的更改。我建议你不要那样做。您应该在本地编辑代码,然后确保它在本地服务器上工作,最后在提交后上传更改。你的回购应该反映现场代码。
最后,我建议您在Heroku或AWS或两者都创建帐户。把它弄得乱七八糟,看看它是如何工作的,这通常是最好的学习方法。它是免费的,你不能破坏任何东西。
https://stackoverflow.com/questions/48030232
复制相似问题