chao faf16d266e update | 3 달 전 | |
---|---|---|
.. | ||
src | 3 달 전 | |
.gitignore | 3 달 전 | |
README.md | 3 달 전 | |
jsconfig.json | 3 달 전 | |
package.json | 3 달 전 | |
tsconfig.base.json | 3 달 전 |
(This package is not yet published to NPM registry, so presumably)
$ npm install --dev @yume-chan/ts-package-builder typescript
TypeScript is a peer dependency that must be installed separately (so you can use any version you want).
$ npm install tslib
The default configuration has "importHelpers": true
, so tslib
is required (and it is a production dependency, not dev dependency).
A tsconfig.json
file at package root is required for both this builder and editors.
{
// Extends default configurations.
"extends": "./node_modules/@yume-chan/ts-package-builder/tsconfig.base.json",
// (Optional) Add override configurations.
"compilerOptions": {
// All TypeScript configurations are allowed.
"target": "ES2016",
// Add extra ambient types.
// Don't forget to include "jest" unless you don't write unit tests.
// The default is `[ "jest" ]`
"types": [
"w3c-web-usb",
"jest",
"node"
]
},
// (Optional) Specify types that's only used in tests.
// They will be excluded in ESModule build,
// to make sure library code doesn't accidentally use them.
// (for example, a browser targeted libraries should not use types from `@types/node`)
"testTypes": [
"jest",
"node"
],
// (Optional) Add project references to improve editing experience.
// However, because the builder is intended to be used with some monorepo manager
// (lerna, yarn workspace, rush, etc.), and they all have good built-in support
// for building all packages following dependency graph, it **does not** use
// project references when building.
"references": [
{
"path": "../dependency-a/tsconfig.json"
},
{
"path": "../dependency-b/tsconfig.json"
}
]
}
$ npx build-ts-package
Or add a script to package.json
{
"scripts": {
"build": "build-ts-package",
},
}
The builder outputs Node.js compatible ES Module, with source maps, TypeScript declarations, and declaration maps.
Module | Output Directory | Excluded Files | Excluded Types |
---|---|---|---|
ESModule | esm |
*.spec.ts |
@types/jest |
Declaration (d.ts) | dts |
*.spec.ts |
@types/jest |
Example package.json
:
{
"main": "esm/index.js",
"types": "dts/index.d.ts",
}
Test file convention: put .spec.ts
files inside src
, alongside the source file that will be tested.
Like this:
The .spec.ts
files will be compiled to CommonJS for Jest (so no ts-jest
required).
Use the following jest.config.js
file to find them:
module.exports = {
testMatch: ['<rootDir>/cjs/**/*.spec.js'],
};
Because .spec.ts
files have been compiled to CommonJS, you can exclude them using .npmignore
:
**/*.spec.ts
**/*.spec.js
**/*.spec.js.map