The correct usage of integrate mode of create-fastify
Hi,
I am reading Chapter 5 - Conventions section.
It mentions the integrate mode of lib create-fastify.
But the usage in the tutorial is different from the one listed on its repo
From tutorial:npm init fastify -- --integrate
From README.md of create-fastify repo:npm init fastify --integrate
What are the differences of these two usages? Or are they the same at all?
Comments
-
Hi @krave,
I found your question quite interesting so I dug a little deeper.
On the surface it looks quite straight forward. It's wrongly stated in the README.md repo. Simply because--integratewill be passed tonpminstead ofcreate-fastify.
Also, the double-hyphen character is telling npm to stop parsing command line options and switches, sonpm init fastify -- --integrateactually means:npm init fastify=>npm exec create-fastify=>fastify generate .(this is the fastify-cli npm module).The standalone
--is telling npm to stop parsing whatever it is after it so--integrategets passed to the command above, which means it's like running:fastify generate . --integrateYou can easily double check this by doing:
mkdir new; cd new npm init fastify --integrate npm init fastify --integrate // second time you will get a warning, saying package.json already exists (but why?... i'm using --integrate) npm init fastify -- --integrate // works fine rm -rf * npm init fastify --integrator // bogus param, but no error ...what's up with that
What puzzled me was why
npmis ignoring unknown cli arguments, and while my google-fu didn't yield a recent topic on this, it looks like it has been since forever. Probably I should be ashamed I didn't knew this, but oh well, we live and learn. There are multiple closed git issues and RFCs around this topic in npm's repos, so feel free to dive into those if you want an explanation around this topic.I hope this sheds some light into what are the differences between the two. It most certainly helped me understand it better and learnt something new in the process.
0 -
Hi @AlexDumitru
Thank you for your reply and the research.
What puzzled me was why npm is ignoring unknown cli arguments
It turns out that the standalone
--is a standard command usage across all UNIX commands not only for npm.If we run
npm init fastify --integrator, from the perspective ofnpmprogram, there is a variable$1assigned as 'integrator'. If the implemention ofnpmdoes not use$1in its code, it will always ignore it no matter what you type in the command line.And I also found this isssue
It looks like the implemention of npm v6 will check
$1and npm v7 will ignore it.So, I think the README.md is just obsolete rather than completely wrong.
1 -
if you already have an existing package.json and want to include fastify. these are the steps.
- npm init fastify --integrate
- npm install
Done.
0 -
the problem is it depends on the version of npm, - this has been changed, changed back and changed back again based on npm changes between version - the content is now synced with the npm version that's installed alongside Node 16
0
Categories
- All Categories
- 176 LFX Mentorship
- 176 LFX Mentorship: Linux Kernel
- 750 Linux Foundation IT Professional Programs
- 373 Cloud Engineer IT Professional Program
- 169 Advanced Cloud Engineer IT Professional Program
- 74 DevOps IT Professional Program - Discontinued
- 4 DevOps & GitOps IT Professional Program
- 99 Cloud Native Developer IT Professional Program
- 7.6K Training Courses & Learning Paths
- 1 AI & ML Training
- 1 Blockchain & Decentralized Identity Training
- 3 Cloud & Containers Training
- 1 Cybersecurity Training
- 1 DevOps & Site-Reliability Training
- 1 Linux Kernel Development Training
- 1 Networking Training
- 1 Open Source Best Practice Training
- 1 System Administration Training
- 1 System Engineering Training
- 1 Web & Application Development Training
- 792 Hardware
- 202 Drivers
- 68 I/O Devices
- 37 Monitors
- 95 Multimedia
- 173 Networking
- 91 Printers & Scanners
- 87 Storage
- 768 Linux Distributions
- 81 Debian
- 67 Fedora
- 22 Linux Mint
- 13 Mageia
- 24 openSUSE
- 150 Red Hat Enterprise
- 31 Slackware
- 13 SUSE Enterprise
- 356 Ubuntu
- 465 Linux System Administration
- 31 Cloud Computing
- 73 Command Line/Scripting
- Github systems admin projects
- 98 Linux Security
- 78 Network Management
- 101 System Management
- 46 Web Management
- 106 Mobile Computing
- 18 Android
- 73 Development
- 1.2K New to Linux
- 1K Getting Started with Linux
- 392 Off Topic
- 121 Introductions
- 181 Small Talk
- 29 Study Material
- 949 Programming and Development
- 310 Kernel Development
- 621 Software Development
- 982 Software
- 374 Applications
- 182 Command Line
- 5 Compiling/Installing
- 68 Games
- 317 Installation
- Archived
- 2 LFD140 Class Forum
Upcoming Training
-
August 20, 2018
Kubernetes Administration (LFS458)
-
August 20, 2018
Linux System Administration (LFS301)
-
August 27, 2018
Open Source Virtualization (LFS462)
-
August 27, 2018
Linux Kernel Debugging and Security (LFD440)
