Pluggable Widgets Tools
About
Library to build, test, format, run, release and lint your Pluggable Widget
How to install
Install from npm using npm install @mendix/pluggable-widgets-tools
How to use
In your package.json
tasks, use the following command with the desired task:
pluggable-widgets-tools task
Available tasks
start:server
Used to start webpack-dev-server and run your WEB project. Accepts --open
option to auto open your browserstart:js
Used to build and watch the changes of your JavaScript ES6 Web projectstart:ts
Used to build and watch the changes of your TypeScript Web projectstart:js:native
Used to build and watch the changes of your JavaScript ES6 Native projectstart:ts:native
Used to build and watch the changes of your Typescript Native projectbuild:js
Used to build your JavaScript ES6 Web projectbuild:ts
Used to build your TypeScript Web projectbuild:js:native
Used to build your JavaScript ES6 Native projectbuild:ts:native
Used to build your TypeScript Web projectrelease:js
Used to build your JavaScript ES6 Web project for productionrelease:ts
Used to build your TypeScript Web project for productionrelease:js:native
Used to build your JavaScript ES6 Native project for productionrelease:ts:native
Used to build your TypeScript Web project for productionlint
Used to lint your project using ESLintlint:fix
Used to fix lint problems/warning using ESLintformat
Used to format your code using Prettiertest:unit
Used to execute unit tests using Jest for your Web Project. Accepts option --u
to update, --no-cache
ro remove previous snapshots, --ci
assumes use of a CI environment, --coverage
to support coverage test. the snapshots. Files should be inside src/components/__tests__
test:unit:native
Used to execute unit tests using Jest for your Native Project. Accepts option --u
to update, --no-cache
ro remove previous snapshots, --ci
assumes use of a CI environment, --coverage
to support coverage test.. Files should be inside src/components/__tests__
test:e2e:js
Used to execute End-to-end tests using Wdio in your JavaScript Web Projecttest:e2e:ts
Used to execute End-to-end tests using Wdio in your TypeScript Web Project
Examples
"start": "pluggable-widgets-tools start:server --open"
"build": "pluggable-widgets-tools build:js"
"lint": "pluggable-widgets-tools lint"
"lint:fix": "pluggable-widgets-tools lint:fix"
"test:unit": "pluggable-widgets-tools test:unit --coverage"
Notes
If you are using mono repositories and need to build multiples widgets using Lerna or some other tool, you can provide the option --subprojectPath
for the tasks build
, start
and release
.
- Example
"buildSubProject": "pluggable-widgets-tools build:ts --subProjectPath \"/packages/mysubproject\"
Webpack extensibility
To extend the current webpack configurations and add your own custom features, you can create a file inside the root of your project with the files webpack.config.dev.js
or webpack.config.prod.js
according to your
necessity.
To extend the current files you can add inside your custom file the following lines:
Please note we have different configurations for web/hybrid and native mobile apps because native mobile doesn't have a preview mode in Mendix Studio Pro. Your preview configuration is related to the file Widget.webmodeler.tsx or .jsx.
For web and hybrid mobile apps
const merge = require("webpack-merge");
const baseConfig = require("./node_modules/@mendix/pluggable-widgets-tools/configs/webpack.config.dev.js");
const customConfig = {
devtool: "source-map"
};
const previewConfig = {
devtool: "source-map"
};
module.exports = [merge(baseConfig[0], customConfig), merge(baseConfig[1], previewConfig)];
For native mobile apps
const merge = require("webpack-merge");
const baseConfig = require("./node_modules/@mendix/pluggable-widgets-tools/configs/webpack.native.config.js");
const customConfig = {
devtool: "source-map"
};
module.exports = [merge(baseConfig, customConfig)];