某些节点模块具有特定的平台安装要求。例如,node-sass:https://www.npmjs.com/package/node-sass#install不能在Mac上构建并且不能在Windows或Linux上使用。它可以在Windows上运行,但前提是要在Windows上构建它。由于它具有node-gyp依赖性,因此必须专门在要运行它的平台上构建。
lodash没有这么复杂。
除了阅读每个软件包的文档/手动进行实验之外,是否有任何(理想的是自动的或编程的)方式来了解哪些软件包像node-sass一样工作,哪些软件包像lodash一样工作?
我想将我的node_modules目录安装到Docker容器,但是我想将节点模块本地安装在主机上。不适用于诸如node-sass之类的任何模块。
答案 0 :(得分:0)
package.json
文件应使用os
属性指定软件包对操作系统的任何限制,例如"os" : [ "darwin", "linux" ]
甚至"os" : [ "!win32" ]
。
已经说过,没有强制使用此属性的真正方法,程序包作者可以忽略(或忘记!)以在os
文件中指定package.json
属性,但仍然编写仅适用于特定操作系统的软件包。
答案 1 :(得分:0)
您可以检查OS的package.json以及是否需要构建软件包(如此处的答案) Node.js / npm - anyway to tell if a package is pure JS or not? 但是总的来说,在主机上本地安装node_modules并将其安装到docker的主要思想上是不合适的,而docker的主要思想是在零配置或相关性为零的任何地方运行同一映像