Loading an NPM package using Chef - npm

I'm new to Chef and followed this tutorial (http://www.opinionatedprogrammer.com/2011/06/chef-solo-tutorial-managing-a-single-server-with-chef/) in which I created 4 files: install.sh, solo.json, solo.rb and default.rb. (default.rb is under the directory coobooks/zombie/recipes/ and all other files are under a top level chef directory). I ran the install.sh script which basically installs ruby and chef and then issues "chef-solo -c solo.rb -j solo.json" but got this error:
"ERROR: Cookbook npm not found. If you're loading npm from another cookbook, make sure you configure the dependency in your metadata."
I think I'm incorrectly referencing the npm package or including a particular node package (Mocha) the wrong way. Can anyone please give me any guidance on this error? Thanks.
My default.rb file:
package 'nodejs'
package 'npm'
include_recipe "npm"
npm_package "default" do
enable true
end
npm_package "mocha#1.17.1"
My solo.json file:
{
"run_list": [ "recipe[npm]", "recipe[zombie::default]" ]
}

You need to an the npm cookbook to the cookbooks/ directory. You can grab it from here
Btw, that tutorial is great, helps lay down a lot of the fundamental understanding of the chef ecosystem.

Related

Environment variables (zsh terminal) installed through npm on MacOS 12.4 Monterey - SOLVED

Background:
Dear Stackoverflow community. I recently switched from Windows to MacOS and am at a loss how to configure environment variables. Many of the previous questions asked here are about bash instead of zsh.
Goal:
I am trying to install an npm package globally. For instance:
npm install -g vercel
or any other package, and use it in my Visual Studio Code terminal (also zsh). If I want to deploy code I have to use 'npx vercel deploy' every time. I want to be able to use "vercel deploy" but instead I get:
zsh: command not found: vercel
What I tried so far:
Installing the package in zsh and visual studio code terminals (didn't work)
Setting the path equal on both VS and terminal: export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
I learned that you need to add environment variabels to a .zshrc file. I don't seem to have a zshrc file. When I do:
sudo ~/.zshrc
Password: XXXXXX
sudo: /Users/vincent/.zshrc: command not found
I am getting another error.
I read in the zsh man file that you should use $HOME/.zshrc instead. Again I am getting the same errors:
vincent#Vincents-MacBook-Air-2 ~ % $HOME/.zshrc
zsh: permission denied: /Users/vincent/.zshrc
vincent#Vincents-MacBook-Air-2 ~ % sudo $HOME/.zshrc
sudo: /Users/vincent/.zshrc: command not found
Update 1:
#slebetman Thank you for your explanation. When I open the terminal I go to home via "cd $HOME" which puts me in in the home directory. However there is no way for me to create a .zshrc file in that directory. Neither via touch or vs code. I am getting the following error: "Unable to write file '/home/.zshrc' (Unknown (FileSystemError): Error: ENOTSUP: operation not supported on socket, open '/home/.zshrc')"
Update 2:
I did manage to find the .zshrc file in visual studio code under /etc. I hope this will work. I was able to overwrite the file with Sudo and add environment variables to it.
Add this to the file .zshrc file under /etc and force overwrite it:
export vercel=/Users/vincent/.npm-global/bin/vercel
Screenshots below for those who will try in the future:
Image with .zshrc file layout
Final remarks:
I don't understand how it is so difficult to add environment variables on Mac while everything else is so easy.
I have read many different questions on stackoverflow, and I can't seem to solve it. Also since I am a newbie I am not allowed to comment on there so I post here in the hope that anyone can help me :)
Best,
Vincent
Note that when you do:
npx vercel deploy
Npm will execute vercel for you without installing it. It does that by temporarily downloading vercel. If you want to run vercel directly without using npx then simply don't use npx. Install it instead:
npm install -g vercel
The -g flag installs the module globally and if the module has a CLI it will be available globally as well (note that depending on your setup you may need admin/sudo privileges to use the -g flag). Now you can run vercel by simply typing:
vercel deploy
This works in all operating systems supported by node.js and npm. That means you can even do this in Windows. In fact I use npm to distribute my tools in a simple cross-platform way so I don't have to support multiple package managers like chocolatey (Windows), homebrew (Mac OS), deb (Debian based distros), rpm (Redhat based distros) etc. (npm does not require your software to be written in node.js - I have published packages on npm written in tcl and bash).

Dependabot shows npm errors when I only configure pip ecosystem

I have a repository that is showing npm security advisories from dependabot, even though I only have the "pip" ecosystem configured:
version: 2
updates:
- package-ecosystem: "pip"
directory: "/src/" # Location of package manifests
schedule:
interval: "weekly"
My npm packages are only used at build time, and not deployed. But looks like dependabot sees them because they are in the src/static directory.
I haven't found documentation on this particular issue.
Has anyone found the same situation? How did you solve it?

Missing package name Error with vue cli install from tar

I am behind a corporate proxy and so am installing npm packages via the downloaded tar files. It's worked just fine for alot of packages, however, I have come across the following error when attempting to install the Vue CLI:
Can't install ... Missing package name
I have not found much reference to this error elsewhere. Wondering if someone can point me in a direction on this.

Setting up a big commerce stencil environment

I am using a mac and have been following the instruction on how to set up a Big commerce stencil development environment posted here:
https://stencil.bigcommerce.com/docs/prerequisites
When trying to launch stencil:
stencil start
in the template directory called "airflow" - see screenshot for the directory structure - I receive:
-bash: stencil: command not found
directory structure
I have been trough the trouble shooting pages
and verified I have the correct versions of npm, node and nvm
npm -v
2.14.20
node -v
v4.4.0
I have also confirmed there is only one version of node installed:
ls ~/.nvm/versions/node
v4.4.0
Is there any advice anyone can give on how to troubleshoot this?
Many Thanks
Are you sure you installed stencil-cli globally? Run npm ls -g --depth=0 and confirm that #bigcommerce/stencil-cli is listed. If not, install it with the -g flag...ie: npm install -g #bigcommerce/stencil-cli
Second, make sure you're running the stencil commands in the directory that contains the .stencil file...in your screenshot that'd be the "stencil" directory inside of "airflow".
Hope this helps!

apidocjs not returning anything in response

I have installed 'apidoc' after installing 'npm' and 'node' for my API documentation by the help of following command:
npm install apidoc -g
After installing apidoc globally, I simply ran below command on my project directory (assuming apidoc will consider its default template file):
apidoc
In result no errors and no documentation generated.
Similarly, I have tried:
apidoc -i ~/PROJECTS/jruby/project/webservice/ -o ~/PROJECTS/apidocs/apidoc/ -t ~/PROJECTS/apidocs/mytemplate/
But nothing happens, in that case I had nothing on 'mytemplate' directory.
Can you guys please tell me what I've missed to install/consider? and why nothing is appearing on command execution?
Note: I'm using this for my ruby application, but unable to install its gem as we're running our application on ruby 1.9 and it requires ruby 2.0. I need an independent solution that should works for other projects as well.
Thank you.
I got the solution; copied 'package.json' file from https://github.com/apidoc/apidoc and ran below command for npm
npm install
after getting success install nodejs properly by following steps:
curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install nodejs
then went to the project directory and ran the following command:
apidoc
after success of above command got html document in doc/ directory inside project. Cheers !