- functional – in all senses
- fast – parallelism and concurrency
- shareable – presets as published packages
- 4th line to align with logo on the right
.
├── packages/
│ ├── foo/
│ │ ├── src/
│ │ │ └── index.ts
│ │ ├── test/
│ │ │ └── index.ts
│ │ └── package.json
│ └── bar/
│ ├── src/
│ │ └── index.ts
│ ├── test/
│ │ └── index.ts
│ └── package.json
├── package.json
└── tasks.ts
$ yarn add --dev --ignore-workspace-root-check \
@babel/core \
@babel/register \
@babel/preset-env \
@babel/preset-typescript \
@start/cli \
@start/reporter-verbose \
@start/plugin-sequence \
@start/plugin-parallel \
@start/plugin-xargs \
@start/plugin-find \
@start/plugin-find-git-staged \
@start/plugin-remove \
@start/plugin-read \
@start/plugin-rename \
@start/plugin-write \
@start/plugin-lib-babel \
@start/plugin-lib-typescript-generate \
@start/plugin-lib-eslint \
@start/plugin-lib-istanbul \
@start/plugin-lib-tape \
@start/plugin-lib-codecov// package.json{"private": true,"description": "Start example","workspaces": ["packages/*"],"devDependencies": {},"start": {// tasks file, default to `./tasks`"file": "./tasks""require": [["@babel/register",{"extensions": [".ts",".js"]}]],"reporter": "@start/reporter-verbose"},"babel": {"presets": [["@babel/preset-env",{"targets": {"node": "current"}}],// Babel 7"@babel/preset-typescript"]}}// tasks.ts// write tasks file once, publish it and then reuse or even extend// in all projects using `start.preset` option in `package.json`,// something like `my-start-preset` package with everything includedimportsequencefrom'@start/plugin-sequence'importparallelfrom'@start/plugin-parallel'importxargsfrom'@start/plugin-xargs'importfindfrom'@start/plugin-find'importfindGitStagedfrom'@start/plugin-find-git-staged'importremovefrom'@start/plugin-remove'importreadfrom'@start/plugin-read'importrenamefrom'@start/plugin-rename'importwritefrom'@start/plugin-write'importbabelfrom'@start/plugin-lib-babel'importtypescriptGeneratefrom'@start/plugin-lib-typescript-generate'importeslintfrom'@start/plugin-lib-eslint'import{istanbulInstrument,istanbulReport,istanbulThresholds}from'@start/plugin-lib-istanbul'importtapefrom'@start/plugin-lib-tape'importcodecovfrom'@start/plugin-lib-codecov'constbabelConfig={babelrc: false,presets: [['@babel/preset-env',{targets: {node: 6},modules: false}],'@babel/preset-typescript']}// each named export is a "task"exportconstbuild=(packageName: string)=>sequence(find(`packages/${packageName}/src/**/*.ts`),read,babel(babelConfig),rename((file)=>file.replace(/\.ts$/,'.js')),write(`packages/${packageName}/build/`))exportconstdts=(packageName: string)=>sequence(find(`packages/${packageName}/src/index.ts`),typescriptGenerate(`packages/${packageName}/build/`))exportconstpack=(packageName: string)=>sequence(find(`packages/${packageName}/build/`),remove,// child-processesparallel(['build','dts'])(packageName))// child processesexportconstpacks=xargs('pack')exportconstdev=(packageName: string)=>watch(`packages/${packageName}/**/*.ts`)(build(packageName))exportconstlint=()=>sequence(findGitStaged(['packages/*/{src,test}/**/*.ts']),read,eslint())exportconstlintAll=()=>sequence(find(['packages/*/{src,test}/**/*.ts']),read,eslint())exportconsttest=()=>sequence(find('coverage/'),remove,find('packages/*/src/**/*.ts'),istanbulInstrument({esModules: true,extensions: ['.ts']}),find('packages/*/test/**/*.ts'),tape(),istanbulReport(['lcovonly','html','text-summary']),istanbulThresholds({functions: 100}))exportconstci=()=>sequence(// nested tasklintAll(),// nested tasktest(),find('coverage/lcov.info'),read,codecov)$ yarn start
# or
$ npx start
One of the following task names is required:
* build
* dts
* pack
* packs
* dev
* lint
* lintAll
*test* ci$ yarn start build foo
$ yarn start dts foo
$ yarn start pack foo
$ yarn start packs foo bar
$ yarn start dev bar
$ yarn start lint
$ yarn start lintAll
$ yarn start test
$ yarn start ci- Node.js TypeScript library preset – @deepsweet/start-preset-node-ts-lib
- Node.js TypeScript libraries monorepo – Start project builds itself from sources using sources, see
tasks/index.ts - React / React Native (higher-order) components monorepo – hocs
- React app – to be added
- ⬛️ cli – CLI entry point
- ⚙️ plugin – plugin creator
- 📃 reporter-verbose – verbose reporter
- ⏩ plugin-sequence – run plugins in sequence
- 🔀 plugin-parallel – run tasks as parallel child processes with same agruments
- 🔂 plugin-xargs – run task as parallel child process for each argument
- 🐣 plugin-spawn – spawn new child process
- 👔 plugin-env – set environment variable using
process.env - 🔌 plugin-input-files – inject arguments as files into Start flow files
- 🔌 plugin-output-files – to be added
- 🔍 plugin-find – find files using glob patterns
- 🔍 plugin-find-git-staged – find Git staged files and filter them using glob patterns
- 📖 plugin-read – read files content
- 🔠 plugin-rename – rename files
- ❌ plugin-remove – remove files or directories
- 👯 plugin-copy – copy files to relative destination using streams and keeping folders structure
- ✏️ plugin-write – write files with source maps to relative destination keeping folders structure
- ✏️ plugin-overwrite – overwrite files
- 👀 plugin-watch – watch for new or changed files matched by glob patterns
- 🗜 plugin-unpack – unpack .tar/.tar.bz2/.tar.gz/.zip archives
- 🏭 plugin-lib-babel – transform files using Babel
- 🏭 plugin-lib-esm-loader – copy a predefined ESM loader file to a directory
- 🏭 plugin-lib-webpack – bundle files using Webpack
- 🏭 plugin-lib-webpack-dev-server – run Webpack development server
- 🏭 plugin-lib-rollup – bundle files using Rollup
- 🏭 plugin-lib-typescript-generate – generate
.d.tsfiles using TypeScript - 🏭 plugin-lib-flow-generate – generate
.js.flowfiles using Flow - 🏭 plugin-lib-postcss – transform files using PostCSS
- 🏭 plugin-lib-less – to be migrated
- 🏭 plugin-lib-clean-css – to be migrated
- 🏭 plugin-lib-uglify – to be migrated
- ✅ plugin-lib-jest – run tests using Jest
- ✅ plugin-lib-tape – run tests using Tape
- ✅ plugin-lib-karma – run tests using Karma
- 💯 plugin-lib-instanbul – collect, report and check code coverage using Istanbul
- ✅ plugin-lib-ava – to be migrated
- ✅ plugin-lib-mocha – to be migrated
- ❓ plugin-assert – Node.js
assert()
- 🚷 plugin-lib-eslint – lint and/or fix code using ESLint
- 🚷 plugin-lib-prettier-eslint – fix code(style) using Prettier + ESLint
- 🚷 plugin-lib-typescript-check – check types using TypeScript
- 🚷 plugin-lib-flow-check – check types using Flow
- 💯 plugin-lib-codecov – send code coverage report to codecov.io
- 🔢 plugin-lib-npm-version – bump package version
- 📦 plugin-lib-npm-publish – publish package to NPM
- 💯 plugin-lib-coveralls – to be migrated
Coming soon.
- stabilize and publish 0.1.0 of everything
- documentation
- more tests
- migrate the rest of important plugins
All the packages in this repository are released under the terms of the MIT License.
The font used in logo is supernova fat.