0.0.3 • Published 3 years ago
@neodx/libmake v0.0.3
In early development
One command, one dependency and zero configuration to build your libraries.
Features
- Zero configuration with auto detection
- SWC additional configuration (
.swcrc) - Babel (
.babelrcor other formats) - we should replace (or add one more step?) swc with babel when we found.babelrc - CSS
- PostCSS (by default if we found
postcss.config.jsor any other pre-processor) - SCSS, LESS, Stylus
- Modules (
my-file.module.css) and global (any other) files
- PostCSS (by default if we found
- SWC additional configuration (
- Beautiful TypeScript support
- Builds clean TypeScript definitions
- Support configuration:
baseUrl, paths, externalHelpers, target, sourceMap, experimentalDecorators
- Multiple entries and outputs
- Different outputs:
CJS,ESM(.mjs),UMD - Single or multiple inputs: file, array, globs and all together
- Out-of-box split output on multiple entries
- wip
package.jsonupdate suggestion:exportsandtypesVersions
- Different outputs:
Installation and fast setup
Install libmake with any package manager: yarn add -D @neodx/libmake / npm i -D @neodx/libmake.
Describe your package.json:
{
main: 'dist/index.cjs',
types: 'dist/index.d.ts',
source: 'src/index.ts',
module: 'dist/index.mjs',
exports: {
'.': {
default: './dist/index.mjs',
require: './dist/index.cjs',
import: './dist/index.mjs'
}
},
files: ['dist', 'README.md'],
scripts: {
dev: 'libmake -w',
build: 'libmake'
}
}And try to run our CLI: yarn libmake
Example of package.json minimal setup
{
main: 'dist/index.cjs',
module: 'dist/index.mjs',
scripts: {
dev: 'libmake -w',
build: 'libmake'
}
}Known issues and limitations
Slow TypeScript definitions and CSS build time
We use rollup-plugin-dts and rollup-plugin-postcss,
both of them significant slow down the build time.
Probably, we will change our setup with other solutions or even with self-made plugins in future.
Limited CSS support - single file only, no imports in generated code
Unfortunately, currently we can't provide great CSS output :(
Supported features:
- CSS modules (
my-file.module.css), global styles - Scss, less, stylus
- PostCSS configuration
- Minification
Unsupported:
- Multiple entries - see our "advanced-mixed" example
- Import statements in built code, which is required for DX with multiple entries
Temporal milestones
[rejected]Replace postcss plugin with https://www.npmjs.com/package/rollup-plugin-styles- Add support for CSS splitting
- Research why swc remove
.scssextension - Fork
rollup-plugin-styles