Ansible npm安装在一个会话列表

问题描述:

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

- 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 

莫非这与故宫的工作?如果是这样,我做错了什么?

Could this work with npm?

试试看与name: package1 package2,你会看到为什么:

cmd: /bin/npm install --global 'package1 package2' 

name参数需要字符串并设为所述给定值作为从而串逃逸/引用它。

-

作为一个方面说明,在Ansible一些其他的包管理模块自动组合中的项目(包)到一个单一的执行调用(虽然主要是为了避免问题的依赖性,而不是优化)。 npm模块没有。

group_vats /所有定义数组作为*

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 
+0

感谢您的回答,但我仍然得到同样的错误。也许npm名称只能采取一个参数? – J21042

+0

嗯。也许你是对的。在npm文档中没有看到多个安装示例 –