npm install:有没有办法忽略package.json

时间:2017-11-19 05:43:18

标签: node.js npm npm-install package.json

我目前正在尝试为包含本地依赖项的node.js项目创建一个docker容器。这似乎导致docker的问题,所以作为一种解决方法我试图只复制本地依赖项文件夹,并忽略它们在package.json文件中的依赖项。有没有办法指定我想忽略的依赖项并让npm安装运行并跳过这些内容?

2 个答案:

答案 0 :(得分:7)

可以使用devDependencies

完成

您只需开发的npm模块,例如:单元测试,Coffeescript到Javascript的转换,缩小等,使所需的模块成为devDependency。

要跳过devDepenencies的安装,请将--production标记传递给npm install,并将--production标记(或NODE_ENV环境变量设置为production){{1不会安装devDependencies中列出的模块。"

npm

要使任何模块成为devDependencies的一部分,请在安装时传递--dev。

npm install --production

答案 1 :(得分:0)

这是一个常见问题,不仅对于Docker,而且对于某些云部署也是如此。例如,使用标准Node.js buildpack部署到CloudFoundry将会导致npm install / yarn始终运行。因此,您还需要应用一些技巧来使用本地模块

如果您不介意从NPM切换到Yarn进行依赖项管理,则可以使用workspaces功能。

我的package.json如下:

{

  ...

  "dependencies": {
    "some-module-i-want-to-install": "1.0.0",
    "another-module-i-want-to-install": "1.0.0",
    "@my/local-dependency-one": "1.0.0",
    "@my/local-dependency-two": "1.0.0"
  },
  "workspaces": ["packages/*"]
}

我的项目源代码布局具有以下结构:

.
├── index.js
├── package.json
├── packages
│   ├── local-dependency-one
│   │   ├── index.js
│   │   └── package.json
│   └── local-dependency-two
│       ├── index.js
│       └── package.json
└── yarn.lock

运行yarn之后,要从NPM注册表中提取要安装的模块,并将本地依赖项从packages目录安装到node_modules

.
├── index.js
├── node_modules
│   ├── @my
│   │   ├── local-dependency-one
│   │   │   └── ...
│   │   └── local-dependency-two
│   │       └── ...
│   ├── another-module-i-want-to-install
│   │   └── ...
│   └── some-module-i-want-to-install
│       └── ...
├── package.json
├── packages
│   ├── local-dependency-one
│   │   └── ...
│   └── local-dependency-two
│       └── ...
└── yarn.lock 

如您所见,我更喜欢将本地软件包定义为scoped@my/...)。这不是强制性的,而是最佳实践。 NPM将范围限定的软件包视为private by default,因此我不必担心它们会偶尔发布或明确标记为私有。