ckeditor / ckeditor5-package-generator

A tool for creating a new package for CKEditor 5.
Other
6 stars 8 forks source link

Added --use-yarn flag to package generator and set it to true by default when yarn is installed #126

Closed martnpaneq closed 1 year ago

martnpaneq commented 1 year ago

Other (generator): Added --use-yarn flag to package generator to use yarn for installing dependencies in a newly created package. If npm and yarn are installed and no flags are set, user is prompted for a choice. Closes #120

martnpaneq commented 1 year ago

I just realised that I'm displaying the option to choose the package manager using the cli even when yarn is not installed.

image

I'm going to change the logic to use npm by default and not display the option to choose when yarn is not installed. What should we do when someone uses --use-yarn flag but it is not installed? Should we throw an error or use npm despite the flag? @pomek @psmyrek

martnpaneq commented 1 year ago

I decided that when yarn is not installed, npm is used even when --use-yarn flag is specified. When no flags are provided (--use-npm, --use-yarn), and yarn is installed, the prompt will ask to choose the package manager.

martnpaneq commented 1 year ago

We had a call with @pomek, and we discovered that the reason for npm install failing locally in dev mode, was the way npm handles links. Dependencies of linked package are not installed. Fortunately for npm > 8 there is a flag --install-links that installs missing dependencies.

psmyrek commented 1 year ago

Creating a "npm + JS" package ends with an error on my environment (Node v16.16.0, npm v8.16.0)👇🏻

Log ``` node ./packages/ckeditor5-package-generator/bin/index.js @test/ckeditor5-test-pkg --dev --verbose Verifying the specified package name. Checking whether the "ckeditor5-test-pkg" directory can be created. Creating the directory "D:\Projekty\ckeditor5-package-generator\ckeditor5-test-pkg". Choose the package manager: npm Choose your programming language: JavaScript Collecting the latest CKEditor 5 packages versions... Copying files... * Copying "common/.editorconfig"... * Copying "common/.stylelintrc"... * Copying "common/ckeditor5-metadata.json"... * Copying "common/lang/contexts.json"... * Copying "common/LICENSE.md"... * Copying "common/README.md"... * Copying "common/theme/icons/ckeditor.svg"... * Copying "js/.eslintrc.js"... * Copying "js/.gitattributes"... * Copying "js/package.json"... * Copying "js/sample/ckeditor.js"... * Copying "js/sample/dll.html"... * Copying "js/sample/index.html"... * Copying "js/src/index.js"... * Copying "js/src/myplugin.js"... * Copying "js/tests/index.js"... * Copying "js/tests/myplugin.js"... Installing dependencies... It takes a while. npm WARN ERESOLVE overriding peer dependency npm WARN While resolving: istanbul-instrumenter-loader@3.0.1 npm WARN Found: webpack@5.74.0 npm WARN node_modules/webpack npm WARN webpack@"^5.58.1" from @ckeditor/ckeditor5-package-tools@1.0.0-beta.6 npm WARN node_modules/@ckeditor/ckeditor5-package-tools npm WARN dev @ckeditor/ckeditor5-package-tools@"file:D:/Projekty/ckeditor5-package-generator/packages/ckeditor5-package-tools" from the root project npm WARN 12 more (@ckeditor/ckeditor5-dev-env, ...) npm WARN npm WARN Could not resolve dependency: npm WARN peer webpack@"^2.0.0 || ^3.0.0 || ^4.0.0" from istanbul-instrumenter-loader@3.0.1 npm WARN node_modules/istanbul-instrumenter-loader npm WARN istanbul-instrumenter-loader@"^3.0.1" from @ckeditor/ckeditor5-package-tools@1.0.0-beta.6 npm WARN node_modules/@ckeditor/ckeditor5-package-tools npm WARN npm WARN Conflicting peer dependency: webpack@4.46.0 npm WARN node_modules/webpack npm WARN peer webpack@"^2.0.0 || ^3.0.0 || ^4.0.0" from istanbul-instrumenter-loader@3.0.1 npm WARN node_modules/istanbul-instrumenter-loader npm WARN istanbul-instrumenter-loader@"^3.0.1" from @ckeditor/ckeditor5-package-tools@1.0.0-beta.6 npm WARN node_modules/@ckeditor/ckeditor5-package-tools npm WARN deprecated stable@0.1.8: Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See t he compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser _compatibility npm WARN deprecated @stylelint/postcss-markdown@0.36.2: Use the original unforked package instead: postcss-markdown npm WARN deprecated debug@3.2.6: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a N ode.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797) npm WARN deprecated core-js@2.6.12: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of iss ues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing i s polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. npm ERR! code 1 npm ERR! path D:\Projekty\ckeditor5-package-generator\ckeditor5-test-pkg npm ERR! command failed npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c C:\Users\psmyrek\AppData\Local\Temp\prepare-e2e17665.cmd npm ERR! > @test/ckeditor5-test-pkg@0.0.1 dll:build npm ERR! > ckeditor5-package-tools dll:build npm ERR! node:internal/modules/cjs/loader:936 npm ERR! throw err; npm ERR! ^ npm ERR! npm ERR! Error: Cannot find module 'D:\Projekty\ckeditor5-package-generator\ckeditor5-test-pkg\node_modules\ckeditor5\build\ckedit or5-dll.manifest.json' npm ERR! Require stack: npm ERR! - D:\Projekty\ckeditor5-package-generator\packages\ckeditor5-package-tools\lib\utils\get-webpack-config-dll.js npm ERR! - D:\Projekty\ckeditor5-package-generator\packages\ckeditor5-package-tools\lib\tasks\dll-build.js npm ERR! - D:\Projekty\ckeditor5-package-generator\packages\ckeditor5-package-tools\lib\index.js npm ERR! - D:\Projekty\ckeditor5-package-generator\packages\ckeditor5-package-tools\bin\index.js npm ERR! at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15) npm ERR! at Function.Module._load (node:internal/modules/cjs/loader:778:27) npm ERR! at Module.require (node:internal/modules/cjs/loader:1005:19) npm ERR! at require (node:internal/modules/cjs/helpers:102:18) npm ERR! at module.exports (D:\Projekty\ckeditor5-package-generator\packages\ckeditor5-package-tools\lib\utils\get-webpack-con fig-dll.js:35:14) npm ERR! at module.exports (D:\Projekty\ckeditor5-package-generator\packages\ckeditor5-package-tools\lib\tasks\dll-build.js:12 :24) npm ERR! at Object.dll:build (D:\Projekty\ckeditor5-package-generator\packages\ckeditor5-package-tools\lib\index.js:18:45) npm ERR! at Object. (D:\Projekty\ckeditor5-package-generator\packages\ckeditor5-package-tools\bin\index.js:18:32) npm ERR! at Module._compile (node:internal/modules/cjs/loader:1105:14) npm ERR! at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10) { npm ERR! code: 'MODULE_NOT_FOUND', npm ERR! requireStack: [ npm ERR! 'D:\\Projekty\\ckeditor5-package-generator\\packages\\ckeditor5-package-tools\\lib\\utils\\get-webpack-config-dll.js', npm ERR! 'D:\\Projekty\\ckeditor5-package-generator\\packages\\ckeditor5-package-tools\\lib\\tasks\\dll-build.js', npm ERR! 'D:\\Projekty\\ckeditor5-package-generator\\packages\\ckeditor5-package-tools\\lib\\index.js', npm ERR! 'D:\\Projekty\\ckeditor5-package-generator\\packages\\ckeditor5-package-tools\\bin\\index.js' npm ERR! ] npm ERR! } npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\psmyrek\AppData\Local\npm-cache\_logs\2022-10-19T05_43_14_066Z-debug-0.log D:\Projekty\ckeditor5-package-generator\packages\ckeditor5-package-generator\lib\utils\install-dependencies.js:76 return reject( new Error( 'Installing dependencies finished with an error.' ) ); ^ Error: Installing dependencies finished with an error. at ChildProcess. (D:\Projekty\ckeditor5-package-generator\packages\ckeditor5-package-generator\lib\utils\install-de pendencies.js:76:20) at ChildProcess.emit (node:events:527:28) at maybeClose (node:internal/child_process:1092:16) at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5) ```

I see that "npm + JS" package was tested successfully on CI, so I'm not sure if the error I've got is related to the changes from this PR. @pomek, @przemyslaw-zan any hints?

pomek commented 1 year ago

WFM.

Log ``` /Users/pomek/Projects/ckeditor/ckeditor5-package-generator/packages/ckeditor5-package-generator/bin/index.js @pomek/ckeditor5-npm --use-npm --lang js --dev 📍 Verifying the specified package name. 📍 Checking whether the "ckeditor5-npm" directory can be created. 📍 Creating the directory "/Users/pomek/Projects/tmp/ckeditor5-npm". 📍 Collecting the latest CKEditor 5 packages versions... 📍 Copying files... 📍 Installing dependencies... It takes a while. 📍 Initializing Git repository... 📍 Installing Git hooks... Done! Execute the "cd ckeditor5-npm" command to change the current working directory to the newly created package. Then, the package offers a few predefined scripts: * start - for creating the HTTP server with the editor sample, * test - for executing unit tests of an example plugin, * lint - for running a tool for static analyzing JavaScript files, * stylelint - for running a tool for static analyzing CSS files. Example: npm run start # --- npm -v && node -v 8.19.2 v18.7.0 ```