What is @netlify/build?
@netlify/build is a Node.js library that allows you to programmatically run Netlify Build plugins. It provides a way to automate and customize the build process for Netlify sites, enabling you to extend and modify the default behavior of Netlify's build system.
What are @netlify/build's main functionalities?
Running Build Plugins
This feature allows you to run Netlify Build plugins programmatically. The code sample demonstrates how to configure and run a build with a specific plugin and environment settings.
const { build } = require('@netlify/build');
(async () => {
const result = await build({
config: {
build: {
publish: 'dist',
environment: {
NODE_ENV: 'production'
}
},
plugins: [
{
package: '@netlify/plugin-example',
inputs: {
exampleInput: 'value'
}
}
]
}
});
console.log(result);
})();
Custom Build Configuration
This feature allows you to customize the build configuration, such as specifying the publish directory and build command. The code sample shows how to set a custom build command and publish directory.
const { build } = require('@netlify/build');
(async () => {
const result = await build({
config: {
build: {
publish: 'public',
command: 'npm run build'
}
}
});
console.log(result);
})();
Handling Build Events
This feature allows you to handle build events such as success and error. The code sample demonstrates how to log messages based on the build outcome.
const { build } = require('@netlify/build');
(async () => {
const result = await build({
config: {
build: {
publish: 'dist'
}
},
events: {
onSuccess: () => {
console.log('Build succeeded!');
},
onError: (error) => {
console.error('Build failed:', error);
}
}
});
})();
Other packages similar to @netlify/build
gulp
Gulp is a toolkit for automating painful or time-consuming tasks in your development workflow. It is similar to @netlify/build in that it allows you to define and run build tasks, but it is more general-purpose and not specifically tied to Netlify.
grunt
Grunt is a JavaScript task runner that helps automate repetitive tasks like minification, compilation, unit testing, and linting. Like @netlify/build, it can be used to manage build processes, but it is not specific to Netlify and offers a broader range of task automation.
webpack
Webpack is a module bundler for JavaScript applications. It takes modules with dependencies and generates static assets representing those modules. While @netlify/build focuses on running Netlify-specific build plugins, Webpack is more about bundling and optimizing assets for web applications.