单个会话中的Ansible npm安装列表

单个会话中的Ansible npm安装列表,npm,ansible,Npm,Ansible,我有一个很长的Ansible npm安装项目列表,使用“with_items”非常慢。我希望在单个会话中使用列表,例如: - name: "define list for npm install" set_fact: npm_install_list: - 'mkdirp' - 'request' - 'extend' ... lots more ... - name: "npm install a list at once" n

我有一个很长的Ansible npm安装项目列表,使用“with_items”非常慢。我希望在单个会话中使用列表,例如:

- name: "define list for npm install"
  set_fact:
    npm_install_list:
      - 'mkdirp'
      - 'request'
      - 'extend'
      ... lots more ...

- name: "npm install a list at once"
  npm:
    name: "{{ npm_install_list | join(' ') }}"
    registry: 'http://path.to.private.registry'
    global: yes
    state: present
我得到这个错误:

no JSON object could be decoded  

这是否适用于npm?如果是这样,我做错了什么?

组/all下,将您的数组定义为顶级

npm_install_list:
  - 'mkdirp'
  - 'request'
  - 'extend'
  ... lots more ...
现在在您的角色中像往常一样使用此数组

- name: "npm install a list at once"
  npm:
    name: "{{ npm_install_list | join(' ') }}"
    registry: 'http://path.to.private.registry'
    global: yes
    state: present
这是否适用于npm

没有

只要尝试使用
name:package1 package2
,您就会看到原因:

cmd: /bin/npm install --global 'package1 package2'
name
参数需要一个字符串,并将给定值视为字符串,从而对其进行转义/引用

--


作为旁注,Ansible中的一些其他包管理模块会自动将项(包)组合到单个执行调用中(尽管主要是为了避免依赖性问题,而不是为了优化)<代码>npm模块没有。

谢谢您的回答,但我仍然收到相同的错误。也许npm名称只能接受一个参数?嗯,你可能是对的。我在ansible npm文档中没有看到任何多个安装示例