Closed
Description
When I was creating my (use)Interceptor priorty PR it took me some time to get a working setup and I was wondering if there were some docs on how to ideally setup a local dev enviroment to test routing-controllers (against already existing projects).
A lot of the steps below were added because the (pre)publishing happens in the github workflow. I was curious if there is a better, easier alternative to test out local routing-controllers changes against already existing projects?
I've currently setup the project to support local development and use routing-controllers as a local (symlinked) package like so:
- Install yalc globally
- Install
fs-extra
as a devDependency and create a filecopyFiles.js
in the root of routing-controllers:
const fse = require('fs-extra');
const buildFolders = ['/cjs', '/esm2015', '/types'];
buildFolders.forEach(folder => {
fse.copySync(`./build${folder}`, `.${folder}`, { overwrite: true }, function (err) {
if (err) {
console.error(err);
} else {
console.log('success!');
}
});
});
- Add the following lines to .gitignore in routing-controllers:
/cjs
/esm2015
/types
- Create a .prettierignore file and add the following in routing-controllers:
build
types
cjs
esm2015
- Create a .yalcignore file in routing-controllers
/docs
/lang
/node_modules
/sample
/src
/test
/.github
/build
!cjs
!esm2015
!types
- Add the following script to your package.json in routing-controllers:
"preyalcpublish": "npm run build && npm run build:es2015 && npm run build:types && node copyFiles"
- Run
yalc publish
in this (or forked) repository to publish to the local package store. This will show a message that the package has been published. In my case[email protected] published in store.
- In your consuming project, run
yalc link [email protected]
. This will add a folder.yalc
folder in your project and symlink it to therouting-controllers
in yournode_modules
. (Make sure to check your version specified in package.json and not straight up copy paste the version I'm using) - Whenever you change something in the
routing-controllers
package,publish
again and runyalc update
in the consuming package.
For the people using this setup; please do not add these files to version control (maybe even add them to .gitignore)