stencil
stencil copied to clipboard
bug: stencil build causes copyfile error and creates extra directory in monorepo
Prerequisites
- [X] I have read the Contributing Guidelines.
- [X] I agree to follow the Code of Conduct.
- [X] I have searched for existing issues that already report this problem, without success.
Stencil Version
4.7.0 and higher
Current Behavior
When using npm stencil build
inside a monorepo package, the build process creates extraneous directories and causes [ ERROR ] EBUSY: resource busy or locked, copyfile
errors.
Expected Behavior
npm run build
should not produce extraneous directories. It should not try to copy files outside of the repository.
System Info
System: node 20.8.1
Platform: windows (10.0.22000)
CPU Model: 12th Gen Intel(R) Core(TM) i7-1265U (12 cpus)
Compiler: c:\web\apps\bug-report\node_modules\@stencil\core\compiler\stencil.js
Build: 1710170895
Stencil: 4.12.6
TypeScript: 5.3.3
Rollup: 2.56.3
Parse5: 7.1.2
jQuery: 4.0.0-pre
Terser: 5.29.1
Steps to Reproduce
Starting within development directory c:\web\apps at the command line:
-
mkdir bug-report
-
cd bug-report
-
npx lerna init
- to create the monorepo -
mkdir packages
- because lerna doesn't create the directory for the individual repos -
create a shared css file to be used by all repos in the monorepo
-
mkdir testme\assets\css
-
notepad testme\assets\css\shared.css
- create a basic class and change the font color
-
-
cd packages
-
npm init stencil
- select call the project 'one' and select the 'component' option -
cd one
-
notepad src\components\my-component\my-component.tsx
- edit the component to use the stylesheet you created above -
change the style line to
styleUrls: ['my-component.css', '../../../../../testme/assets/css/shared.css'],
-
add the class to the div
-
npm install
- install all of the dependencies -
npm run start
- start your component to confirm that the css class is loaded and changes the color of the div as expected -
close the browser
-
ctrl+c to kill the server so you are back at the command line
-
cd c:\web\apps\bug-report\packages
- make sure you are in the package directory -
dir
- confirm that there is no folder called 'testme' in the packages folder -
cd one
-
npm run build
-
dir ..\
- assuming the build did not give you an error, confirm that it created an extraneous testme folder under packages. This folder is not needed for distribution of the component and can be deleted. -
The build may also create or attempt to create c:\web\apps\testme.
-
The build may also produce the copyfile error above.
Code Reproduction URL
https://github.com/rramsey/stencil-bug
Additional Information
The repo does have the bad packages\testme folder in it, which should be deleted before attempting to build just so you can see it come back.
Thanks for raising the issue. I can confirm that a file was created in packages/testme/assets/css/shared.css
which should not happen. I will ingest this into our backlog for the team to prioritize.
I'm just glad this wasn't something stupid I did. BTW, in addition to packages/testme/assets/css/shared.css
did it try to create c:\web\apps\testme
and the subfolders in that location as well? I'm assuming you didn't see the:
[ ERROR ] EBUSY: resource busy or locked, copyfile
'c:\web\apps\bug-report\testme\assets\css\shared.css' ->
'c:\web\apps\testme\assets\css\shared.css'
So maybe that is something I've done. Or maybe fixing the code that create/copies the files into the packages folder will fix this too.