Manual Project Setup (Advanced)
We strongly recommend using the create-nube-app CLI, which provides templates, pre-configured build scripts, and development tooling aligned with the NubeSDK ecosystem.
However, if you're unable to use the CLI for any reason, you can set up your project manually.
Installing Dependencies
To have access for all types of NubeSDK, install TypeScript and the package @tiendanube/nube-sdk-types. This can be a development dependency.
npm
Yarn
pnpm
Bun
npm install -D typescript @tiendanube/nube-sdk-types
yarn add -D typescript @tiendanube/nube-sdk-types
pnpm add -D typescript @tiendanube/nube-sdk-types
bun add -D typescript @tiendanube/nube-sdk-types
If you are going to develop an application with a user interface, install the package @tiendanube/nube-sdk-ui:
npm
Yarn
pnpm
Bun
npm install @tiendanube/nube-sdk-ui
yarn add @tiendanube/nube-sdk-ui
pnpm add @tiendanube/nube-sdk-ui
bun add @tiendanube/nube-sdk-ui
And if you want to use JSX/TSX syntax, also install @tiendanube/nube-sdk-jsx:
npm
Yarn
pnpm
Bun
npm install @tiendanube/nube-sdk-jsx
yarn add @tiendanube/nube-sdk-jsx
pnpm add @tiendanube/nube-sdk-jsx
bun add @tiendanube/nube-sdk-jsx
Creating the App Entrypoint
Now you need to create a module that holds the App's entrypoint. We usually use main.ts or main.tsx.
// main.ts
import type { NubeSDK } from "@tiendanube/nube-sdk-types";
export async function App(nube: NubeSDK) {
// your code
}
TypeScript Configuration
This is our recommended TypeScript compilerOptions:
{
"compilerOptions": {
"target": "esnext",
"jsx": "react-jsx",
"jsxImportSource": "@tiendanube/nube-sdk-jsx/dist", // ONLY IF YOU USE JSX
"module": "commonjs",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true
}
}
Build Configuration
To build your script, we recommend using tsup, which is already preconfigured in our official templates.
npm
Yarn
pnpm
Bun
npm install -D tsup
yarn add -D tsup
pnpm add -D tsup
bun add -D tsup
// tsup.config.js
import { defineConfig } from "tsup";
export default defineConfig({
entry: ["src/main.tsx"],
format: ["esm"],
target: "esnext",
clean: true,
minify: true,
bundle: true,
sourcemap: false,
splitting: false,
skipNodeModulesBundle: false,
esbuildOptions(options) { // ONLY IF YOU USE JSX
options.alias = {
"@tiendanube/nube-sdk-jsx/dist/jsx-runtime": "@tiendanube/nube-sdk-jsx/jsx-runtime",
};
},
outExtension: ({ options }) => ({
js: options.minify ? ".min.js" : ".js"
})
});
Next Steps
Once your project is set up, continue with Adding script to your application to learn how to register your script in the Partner Portal.