- Install
npm i --save-dev ts-packager
- In your package.json, set
"private": true
! This will prevent accidental publishes from the root. - Create a
ts-package-config.ts
file (see TS Package Config below for more information on this file) - Create a publish script (see Publish Script below)
Setup your ts-package project with a ts-package-config.ts
file at the root of the project. You will need to add this to tsconfig's includes!
ts-package-config.ts
import { Config, BundleMap, bundlePackageJson } from 'ts-packager';
export const config: Config = {
buildDir: 'dist/src/' // Where to put the build files
};
export const files: BundleMap = {
// Copy the changelog to the build
'CHANGELOG.md': true,
// Copy the license to the build
// 'LICENSE.md': true,
// Copy the readme to the build
'README.md': true,
// Copy the package.json to the build, removing scripts & dependencies
'package.json': bundlePackageJson
};
tsconfig.json
{
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist",
"sourceMap": true,
"declaration": true,
"module": "commonjs",
"moduleResolution": "node",
"target": "es6",
"types": ["node"],
"typeRoots": ["node_modules/@types"],
"lib": ["es2017"]
},
"exclude": [
"./dist/"
],
"include": [
"./src/",
"./test/",
"./ts-package-config.ts" // Make sure to add this file!
]
}
scripts/publish.sh
#!/bin/bash
npm run test:prod &&
node_modules/.bin/ts-packager &&
cd dist/src/ &&
npm publish
By default, ts-packager will assume your build is written to dist/src/
, and that the ts-packager config file is compiled to dist/ts-package-config.js
.
You can change this with the --buildDir
and --config
arguments, respectively.