我的package.json文件(简称)中有这个:
{
"name": "a-module",
"version": "0.0.1",
"dependencies": {
"coffee-script": ">= 1.1.3"
},
"devDependencies": {
"stylus": ">= 0.17.0"
}
}
我正在Mac 10.6.8上使用NPM 1.1.1版。
当我从项目根目录运行以下命令时,它将同时安装依赖项和devDependencies:
npm install
我觉得这个命令安装了devDependencies:
npm install --dev
如何使npm install只安装依赖项(所以生产环境只安装这些模块),而像npm install-dev这样的东西同时安装依赖项和devDependencies?
当使用“npm install”时,无论模块是“devDependencies”还是“dependency”,都会在整个应用程序中加载并可用。这个想法的总和:package.json定义为依赖项(任何类型)的所有内容都会安装到node_modules中。
依赖关系/devDependencies/optionalDependencies之间的区别在于代码的使用者可以使用/npm来安装这些资源。
根据文件:https://npmjs.org/doc/json.html...
如果有人计划下载并使用您的模块程序,那么他们可能不想或不需要下载和构建您使用的外部测试或文档框架。在这种情况下,最好在devDependencies哈希。每当--dev配置标志设置。当执行npm链接或当从包的根目录执行npm安装,并可以像这样进行管理任何其他npm配置参数。有关话题
但是,为了解决这个问题,如果您只想使用npm安装“依赖项”,请使用以下命令:
npm install --production
这可以通过查看添加了这个过滤器的Git提交(以及一些其他过滤器[下面列出]来提供这个功能)来确认。
npm可使用的替代过滤器:
--save => updates dependencies entries in the {{{json}}} file
--force => force fetching remote entries if they exist on disk
--force-latest => force latest version on conflict
--production => do NOT install project devDependencies
--no-color => do not print colors
@dmarr尝试使用npm安装--生产
我在docker节点中遇到了一个问题:当前的slim(运行npm 7.0.9),其中npm安装似乎忽略了--production,--only=prod和--only=production。我找到了两种变通方法:
改用ci(RUN-npm-ci-only=production),这需要最新的package-lock.json在npm安装之前,使用以下命令残酷地编辑package.json:
RUN节点-e'const fs=require(“fs”);const pkg=JSON.parse(fs.readFileSync(“./package.JSON”,“utf-8”));删除pkg.devDependencies;fs.writeFileSync(“./package.json”,json.stringify(pkg),“utf-8”);'
这不会编辑您的工作包.json,只会编辑复制到docker容器中的包。当然,这不应该是必要的,但如果是(对我来说),那就是你的黑客。