我需要使用ansible安装npm。我在提到Ansible 2.3:http://docs.ansible.com/ansible/npm_module.html
我使用npm pack coffee-script
打包了npm模块并拥有coffee-script.tgz
。现在我想使用该文件使用npm安装它。
我能找到的最接近的是:
- name: Install "coffee-script" node.js package from custom registry.
npm:
name: coffee-script
registry: 'http://registry.mysite.com'
但是如何从本地文件安装,因为我的服务器没有互联网连接,因此我需要从二进制文件打包和安装。
我想做这样的事情
- name: Install "coffee-script" node.js package from custom registry.
npm:
name: coffee-script
global : yes
source: '/usr/local/coffee-script.tgz'
答案 0 :(得分:0)
请使用此:
- name: Install "coffee-script" node.js package from custom registry.
npm:
name: /usr/local/coffee-script.tgz
path: /app/location
global: yes
答案 1 :(得分:0)
我最终使用npmbox来完美地解决了我的问题。
从我的机器运行命令npmbox coffee-script
,它给我coffee-script.npmbox
然后我粘贴到我的离线服务器并运行npmunbox -g coffee-script.npmbox
但您也需要在离线服务器上安装npmunbox。
npmbox npmbox
npmbox.npmbox
粘贴到离线服务器tar --no-same-owner --no-same-permissions -xvzf npmbox.npmbox
(或在ansible中使用unarhieve
命令)npm install --global --cache ./.npmbox.cache --optional --cache-min 99999999999 --shrinkwrap false npmbox
npmunbox <package_name>.npmbox
离线安装任何npm软件包(例如:npmunbox pm2.npmbox
或npmunbox coffee-script.npmbox
答案 2 :(得分:0)
您可以使用模块npm进行脱机安装。
- name: Install node.js package from custom registry.
npm:
name: "/tmp/pm2-3.5.1.tgz"
global: yes
要进行多次安装,您可以使用loop
。
示例任务:
- name: Find all tgz files in temporary directory
find:
paths: "{{ tmp_node.path }}"
patterns: "*.tgz"
register: node_files
- set_fact:
node_list: "{{ node_files.files | map(attribute='path') | list }}"
- name: Install node.js package from custom registry.
npm:
name: "{{ item }}"
global: yes
loop: "{{ node_list | flatten(1) }}"
node_list
是在目录files
中角色放置的.tgz npm软件包的列表。