// Module included in the following assemblies
//
// * serverless/functions/serverless-developing-nodejs-functions.adoc

:_content-type: REFERENCE
[id="serverless-nodejs-template_{context}"]
= Node.js function template structure

When you create a Node.js function using the `kn` CLI, the project directory looks like a typical Node.js project, with the exception of an additional `func.yaml` configuration file.

Both `http` and `event` trigger functions have the same template structure:

.Template structure
[source,terminal]
----
.
├── func.yaml <1>
├── index.js <2>
├── package.json <3>
├── README.md
└── test <4>
    ├── integration.js
    └── unit.js
----
<1> The `func.yaml` configuration file is used to determine the image name and registry.
<2> Your project must contain an `index.js` file which exports a single function.
<3> You are not restricted to the dependencies provided in the template `package.json` file. You can add additional dependencies as you would in any other Node.js project.
+
.Example of adding npm dependencies
[source,terminal]
----
npm install --save opossum
----
+
When the project is built for deployment, these dependencies are included in the created runtime container image.
<4> Integration and unit test scripts are provided as part of the function template.
