Open rramsey opened 8 months ago
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.
SOLUTION - Here are the steps I followed to resolve this build issue while running -> npm run build:
Prepare the Project: : Before installing additional dependencies, first build and run the default Stencil project.
Clean Up: Make sure to clean the project before installing any other dependencies
Add dependecies: Install new dependencies and other update other files
Build and Run:
Prerequisites
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
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 monorepomkdir packages
- because lerna doesn't create the directory for the individual reposcreate 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 colorcd packages
npm init stencil
- select call the project 'one' and select the 'component' optioncd one
notepad src\components\my-component\my-component.tsx
- edit the component to use the stylesheet you created abovechange 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 dependenciesnpm run start
- start your component to confirm that the css class is loaded and changes the color of the div as expectedclose 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 directorydir
- confirm that there is no folder called 'testme' in the packages foldercd 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.