CGnal JavaScript utils
Common utilities for CGnal's JavaScript projects. Basic functions to manipulate data, mostly based on Lamb's toolset.
Documentation.
The API documentation is published here.
Installation and usage
npm install @cgnal/utils --save
The library doesn't come with a predefined build, but rather relies on the application that uses it to "set the rules".
@babel/runtime-corejs3 and core-js are set as dependencies, so you can make your application build it for your intended targets and eventually add automatically the necessary polyfills.
Example of possible babel configuration:
// ...
"presets": [
["@babel/preset-env", {
"corejs": "3.19",
"modules": "auto",
"useBuiltIns": "usage"
}]
],
"plugins": [
["@babel/plugin-transform-runtime", { "corejs": 3, "proposals": true }],
]
// ...
Usage with Jest
Jest currently (v27.4.2 at the time of writing) doesn't play nice with ES modules and package.json exports. See this issue about the exports support status.
Both problems are easily solved for the time being with a config tweak and, optionally, the support of jest-node-exports-resolver.
Example of Jest configuration without an extra resolver:
// ...
moduleNameMapper: {
"@cgnal/([^/]+)/(.+)": "<rootDir>/node_modules/@cgnal/$1/src/$2"
},
transformIgnorePatterns: ["node_modules/(?!@cgnal)"],
// ...
Example of Jest configuration with the extra resolver:
// ...
resolver: "jest-node-exports-resolver",
transformIgnorePatterns: ["node_modules/(?!@cgnal)"],
// ...
Usage with eslint-plugin-import
eslint-plugin-import still have to support the aforementioned exports field.
You can refer to this issue to track the situation.
In the meanwhile you can add a custom resolver such as @tophat/eslint-import-resolver-require and tweak your configuration to use it:
// ...
"settings": {
"import/resolver": "@tophat/eslint-import-resolver-require"
}
// ...
NPM scripts and Gulp tasks
Only a few Gulp tasks are exposed as npm scripts, as such scripts are only a facilitation to run tasks without having to install gulp-cli as a global module.
Running tasks in a CI server, for example.
If you want to use gulp from the command line, you should npm install gulp-cli -g first, or, to avoid installing it, prefix your commands with npx, e.g. npx gulp test.
NPM scripts
npm run coverageruns thegulp test:coveragetask.npm run docsruns thegulp docstask.npm run lintruns thegulp linttask.npm testruns thegulp testtask.
Gulp tasks
gulp: the default task runs thegulp lintandgulp test:coveragein sequence.gulp bumpupdates version number using an interactive shell.gulp clean: deletes the docs and coverage folders (./docs,./coverage).gulp clean:coverage: deletes the coverage folder (./coverage).gulp clean:docs: deletes the docs folder (./docs).gulp docs: generates the documentation in the./docsfolder.gulp lint: runs linting for code and test, in sequence.gulp lint:code: runs linting for code only.gulp lint:tests: runs linting for tests only.gulp test: runs the test suite.gulp test:coverage: runs tests and generates the code coverage report in./coverage.gulp test:verbose: runs the test suite in verbose mode.gulp test:watch: runs the test suite in watch mode.