npm install -g pie
git clone firstname.lastname@example.org:pie-framework/pie-cli.gitcd pie-clinpm installnpm run buildnpm link# pie-cli executable now points to /bin/pie-cli
If you want to play with the cli while developing you can watch the src, then link the repo so you can invoke the cli
npm link npm run dev # runs -> 'gulp dev' # in some other dir pie --help
To debug typescript you'll need to generate the sourcemaps.
gulp-typescript doesn't do this at the moment, so we use
npm run source-maps
node --debug-brk --inspect $(which pie) ....
node.exe --debug-brk --inspect "C:\Users\Edward Eustace\AppData\Roaming\npm\node_modules\pie\bin\pie" --version
Node is now running in debug mode on
5858 so boot up a debugger. Visual Studio Code has nice typescript debugging support. In VS:
- add a breakpoint to the ts src file you want to debug.
- If you have no debug config it'll ask you to add one.
- Add the following:
- select this runner and the app will start and hit your breakpoint.
If you are commiting a code change that is worthy of being included in the release information, write your commit message using the angular commit conventions outlined here. These commit formats will automatically be included in the release notes.
The integration tests are slower than the unit tests because of all the
npm installcommands. You'll probably want to run the 1 at a time like so:
mocha --require test/init test/integration/framework-support/support-module-test.js
or to run an individual test:
./node_modules/.bin/mocha --require test/init.js test/integration/init.js test/integration/cli/install-test.js
--require test/init- inits babel and the logger.
To run them all:
npm run it
npm install -g nycnyc npm test
npm run build
This creates a new github release from the
Be sure to only use npm for install - if you use yarn you may get publishing errors like:
TypeError: log.gauge.isEnabled is not a function.
git checkout mastergit merge developnpm run release
When you run any of the commands that generate/serve js you are running one or more webpack builds via an
App. For example
pie info uses the
InfoApp which has a
serve function. This method will run an
install then run a server that will make use of
The high level flow is:
prepare webpack config(s) ->
run webpack build |
.pie - build directory
When you install, you are installing the dependencies for your
This happens in a directory called
.pie that is relative to the
pie item directory.
.pie directory is:
package.json- the install generated package.json that lists the pies that are dependencies
.controllers- the controllers install directory for controller related dependencies
.configure- the configure install directory for configure related dependencies.
*.entry.js- entry files for the given app type
*.config.js- webpack config js files (useful for debugging builds)
The webpack builds inside
.pie make use of some pre-installed support directories that are located in
pie-cli/support. They are npm packages that get installed along with
node_modules directories are added to the webpack
They also contain
rules that can be added to a webpack config. All the apps in
pie-cli make use of any rules in the default support packages.
We do this to speed up intallation by only having to install these once. It gives greater control over supporting libs are added to the webpack build.
The support package is a standard npm package and we hope to enable the inclusion of external support packages via command line options for custom builds.
legacy automatic support
The cli automatically supports email@example.com and less. Note that this support will be up for review shortly and may be removed.
Special thanks to Ken Pratt @kenpratt for the
pienpm package name