Add extra packages to NPM from script - npm

I'm building a Yeoman generator which has sub apps. There is a base app which installs base NPM dependencies from a packages.json file. I was the sub app to build on this by installing extra dependencies. Currently it does this by running npm install PACKAGE --save in the sub app Yeoman script. So, my question is this:
Can NPM install additional dependencies, after the initial npm install call, where the deps are defined in a file, like a myExtraDeps.json (cf packages.json)

Related

Cannot find module 'postcss-preset-env' error using create-react-app inside an npm workspace

I'm trying to add a create-react-app app inside a Turborepo monorepo.
Problem is that if I run npm install from the root of the monorepo and then try to start the CRA app by running npm run dev, I get the following error during compile time:
Loading PostCSS "postcss-preset-env" plugin failed: Cannot find module 'postcss-preset-env'
I noticed that if I run npm install from within the CRA app folder (/apps/my-app), and then run npm run dev from the root of the monorepo, it runs just fine.
I also noted that depending from where I run npm install, the contents of /apps/my-app/node_modules will be different, but I think is the expected behaviour.
If I understand correctly the npm workspaces docs, you should always run npm install from the root of the monorepo.
Any idea on what I'm missing here?
I'm using npm 8.3.1.
Here is a public repo with an example: https://github.com/oncet/turborepo-cra

After npm run build > dependency was not found VueJs

After
npm run build
When serving with
npm run serve -s dist
This dependency was not found:
/Users/zarpio/code/vuejs/p3-admin/dist in multi (webpack)-dev-server/client?http://192.168.31.234:8081/sockjs-node (webpack)/hot/dev-server.js ./dist, multi (webpack)/hot/dev-server.js (webpack)-dev-server/client?http://192.168.31.234:8081/sockjs-node ./dist
To install it, you can run: npm install --save /Users/zarpio/code/vuejs/p3-admin/dist
I believe there is a dependency your project has which you have not installed. Run npm install to install the necessary dependencies. sometimes npm gets messed up and i need to delete the entire node modules folder and then run npm install to get a fresh node modules setup.
just to clear some things up.the default vue cli configuration is that npm run serve will run your app live locally. the npm run build compiles your app into the dist folder which you then can serve from your server ( or something like the live server extension in VS code)

How to install npm own local packages?

I have 2 projects(packages) in npm, I want to inject package_A as dependency to package_B. In package_A root folder, I run npm install -g, then npm install it to C:\Users\Myuser\AppData\Roaming\npm\node_moduls\package_A folder. Now in packages.json in package_B I add "package_A": "1.0.0" in dependencies. When in package_B root file I run npm install, its failed package_A#1.0.0 not found.
How can I identified npm to its my own local package?
Notes:
We are a team, then I don't want to address package_A explicitly.
We are using nexus repository manager.
I don't want to publish my projects to http://registry.npmjs.org/.
I'm not 100% clear what you have tried. If you are going to use a custom module for another application you are developing, installing globally won't do the trick. You have to publish that module in npm.
Check this link for more info on publishing in npm
If you have completed the steps correctly, and still no good happens, please check your naming of the module in package.json file.
Instead of typing in the name and version number in package.json file and then npm install, try directly installing in the terminal with --save so that it will automatically be added to package.json file with correct spelling.

npm 5 install folder without using symlink

Before publishing my node library, I could use the advice the npm documentation wrote about:
To test a local install, go into some other folder, and then do:
cd ../some-other-folder
npm install ../my-package
Prior to version 5 of npm, I had no problem as it produce what I expected, ie a folder with the output of what I will publish.
However, using npm 5, it now creates a symlink to my local project as described in the npm documentation:
npm install :
Install the package in the directory as a symlink in the current
project. Its dependencies will be installed before it's linked. If
sits inside the root of your project, its dependencies may be
hoisted to the toplevel node_modules as they would for other types of
dependencies.
How can I use the "old" way to install local project? Or is there a new way to check if my library is correct?
Thank you.
Use npm pack + npm install (as suggested by install-local package)
npm pack <path-to-local-package>
npm install <package-version.tgz>
This will effectively copy your local package to node_modules.
Note that this will package only production relevant files (those listed in the files section of your package.json). So, you can install it in a test app under the package own directory. Something like this:
my-package
package.json
test
test-app
package.json
node_modules
my-package
Assuming that test dir is not included in the files in my-package/package.json.
This works the same way with npm 5 and older versions.
I wrote npm-install-offline which allows you to install npm packages from a local repository or folder. By default it copies the folder on install but you can also choose to symlink.
https://www.npmjs.com/package/npm-install-offline
npx npm-install-offline ../some-package
Or
npx npm-install-offline my-npm-package --repo ./my-offline-npm
It also will install the package dependencies which npm does not do with local packages.

Publish Yeoman generator on npm

I have created a simple Yeoman generator to scaffold a angular typescript app.
I'd like to publish is as a npm package to share it with my team.
I have used yo to create the generator and locally it all works as expected.
I cd to the generator folder in the terminal and run npm publish to pubish the generator.
This works and I can see the generator on npm.
If I than run npm install -g generator-at-test I get a list of warnings in the terminal like
npm WARN skippingAction Module is inside a symlinked module: not running remove acorn#3.3.0 node_modules/generator-at-test/node_modules/acorn
The yo generator does not appear in the list of generators when I run yo in the terminal.
The npm package can be found here https://www.npmjs.com/package/generator-at-test
I can only leave it up 24 hrs but then I'll have to delete it.