1
0
mirror of https://github.com/jordansissel/fpm synced 2024-12-22 00:34:15 +01:00
fpm/docs/packages/npm.rst
Jordan Sissel 9efd56c54a Add npm/nodejs package documentation
This example uses the `ascii-art` npm package. I have realized that
using this package with its example ascii art is likely not accessible
for screen readers. I'll keep the example for now and revise it later.
2021-11-09 15:44:37 -08:00

79 lines
3.0 KiB
ReStructuredText

npm - Packages for NodeJS
===============================
Supported Uses in FPM
---------------------
fpm supports using ``npm`` only as an input type.
Arguments when used as input type
---------------------------------
Any number of arguments are supported and behave as follows:
* ``name@version`` -- a specific named package at the given version.
* ``name`` -- the name of a node package. In this use, the ``--version`` flag is used to pick the version to download. If no version is given, the latest version of the package is downloaded.
Sample Usage
------------
You'll need ``npm`` installed for this example.
Let's turn the ``ascii-art`` npm package into a Debian package. For this example, we'll pick a specific version, 2.8.5::
% fpm --debug -s npm -t deb --depends nodejs ascii-art@2.8.5
Created package {:path=>"node-ascii-art_2.8.5_amd64.deb"}
Fpm uses ``npm`` to download the correct package. Additionally, the package name is given a ``node-`` prefix because this is common in distribution packages to prefix a library with the platform name, such as ``python-foo`` or ``node-foo``.
It also parses the package's ``package.json`` to collect any useful data such as the package name, author, homepage, description, etc::
% dpkg --field node-ascii-art_2.8.5_amd64.deb Package Version Vendor Homepage Description
Package: node-ascii-art
Version: 2.8.5
Vendor: Abbey Hawk Sparrow <@khrome>
Homepage: git://github.com/khrome/ascii-art.git
Description: Ansi codes, figlet fonts, and ascii art. 100% JS
Let's install the package and try to use it::
% sudo apt-get install ./node-ascii-art_2.8.5_amd64.deb
And now we can use this package::
% ascii-art text -F Doom "Hello World"
_ _ _ _ _ _ _ _
| | | | | || | | | | | | | | |
| |_| | ___ | || | ___ | | | | ___ _ __ | | __| |
| _ | / _ \| || | / _ \ | |/\| | / _ \ | '__|| | / _` |
| | | || __/| || || (_) | \ /\ /| (_) || | | || (_| |
\_| |_/ \___||_||_| \___/ \/ \/ \___/ |_| |_| \__,_|
Fpm asked ``npm`` where to install things using ``npm prefix -g``. On my system, this caused the package to install to ``/usr/local/lib/node_modules``. You can change the default prefix with the fpm ``--prefix`` flag or by changing the default global prefix in the ``npm`` tool.
Let's try to invoke ``ascii-art`` from node::
% export NODE_PATH=/usr/local/lib/node_modules
% node
> let art = require("ascii-art")
> art.font("Hello", "Doom", (err, rendered) => console.log(rendered))
_ _ _ _
| | | | | || |
| |_| | ___ | || | ___
| _ | / _ \| || | / _ \
| | | || __/| || || (_) |
\_| |_/ \___||_||_| \___/
Nice :)
Fun Examples
------------
.. note::
Do you have any examples you want to share that use the ``npm`` package type? Share your knowledge here: https://github.com/jordansissel/fpm/issues/new
npm-specific command line flags
-------------------------------
.. include:: cli/npm.rst