Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法知道npm包是否有特定于操作系统的构建需求?_Javascript_Npm - Fatal编程技术网

Javascript 有没有办法知道npm包是否有特定于操作系统的构建需求?

Javascript 有没有办法知道npm包是否有特定于操作系统的构建需求?,javascript,npm,Javascript,Npm,某些节点模块具有特定的平台安装要求。例如,节点sass:不能构建在mac上,也不能在windows或linux上使用。它可以在windows上运行,但前提是您在windows上构建它。由于其节点gyp依赖性,它必须专门构建在您打算运行它的平台上 而lodash没有这种复杂性 除了阅读每个包的文档/手动试验外,是否有任何(理想情况下,自动或编程)方法可以知道哪些包的工作方式类似于node sass,哪些工作方式类似于lodash 我想将node_modules目录装载到docker容器,但我想在主

某些节点模块具有特定的平台安装要求。例如,节点sass:不能构建在mac上,也不能在windows或linux上使用。它可以在windows上运行,但前提是您在windows上构建它。由于其节点gyp依赖性,它必须专门构建在您打算运行它的平台上

而lodash没有这种复杂性

除了阅读每个包的文档/手动试验外,是否有任何(理想情况下,自动或编程)方法可以知道哪些包的工作方式类似于node sass,哪些工作方式类似于lodash


我想将node_modules目录装载到docker容器,但我想在主机上本地安装节点模块。这不适用于任何模块,如节点sass。

包。json文件应使用
OS
属性指定包具有的任何操作系统限制,例如
“OS”:[“darwin”,“linux”]
甚至
“OS”:[“!win32”]


话虽如此,没有真正的方法强制使用此属性,包作者可以省略(或忘记!)要在
package.json
文件中指定
os
属性,但仍要编写一个只在特定操作系统上工作的包。

您可以检查package.json以了解操作系统,以及包是否需要像这里的答案那样构建
但一般来说,在主机上本地安装node_模块并将其装载到docker的主要思想中是不正确的,docker的主要思想是在任何地方以零配置或相关性运行相同的映像,这是有意义的,而且似乎很有帮助。我的问题更具体地说是关于在多个平台上工作的包,只要它们构建在特定的体系结构中。我认为os字段并没有给出“如果我希望它工作,我是否需要在其运行时架构下构建它?”问题的答案。许多web堆栈都有您希望在主机上运行的fs实用程序。例如,
ember cli
是一个ember应用程序的容器运行时的dep,也是一个用于生成项目文件的开发人员工具。您希望能够访问主机上的ember cli bin,并将其安装到容器中。在开发过程中,最简单的答案是装载节点模块。即使在开发过程中,所有这些模块都应该在容器内。如果在容器上运行“生成一些文件”命令,则可以避免众所周知的“它正在我的机器上工作”问题。您可以在容器上获得文件,但需要在主机上进行编辑。这是错误的吗?为ember、react和angular等构建图像的典型场景是先构建应用程序,然后将构建结果复制到容器中,然后由nginx提供服务。现在,开发人员可以构建映像并在本地对其进行测试,以及测试的相同映像。。可以部署到生产中,如果它的节点js应用程序本地npm_模块应该在。dockerignore中,docker文件中会有一个“npm安装”命令,我想说的是docker的主要原因是拥有相同行为的相同映像,而不考虑主机是什么。