UNPKG

@nx/node

Version:

The Node Plugin for Nx contains generators to manage Node applications within an Nx workspace.

105 lines (104 loc) 4.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getWebpackBuildConfig = getWebpackBuildConfig; exports.getEsBuildConfig = getEsBuildConfig; exports.getServeConfig = getServeConfig; exports.getNestWebpackBuildConfig = getNestWebpackBuildConfig; const devkit_1 = require("@nx/devkit"); function getWebpackBuildConfig(project, options) { return { executor: `@nx/webpack:webpack`, outputs: ['{options.outputPath}'], defaultConfiguration: 'production', options: { target: 'node', compiler: 'tsc', outputPath: options.outputPath, main: (0, devkit_1.joinPathFragments)(project.sourceRoot, 'main' + (options.js ? '.js' : '.ts')), tsConfig: (0, devkit_1.joinPathFragments)(options.appProjectRoot, 'tsconfig.app.json'), assets: [(0, devkit_1.joinPathFragments)(project.sourceRoot, 'assets')], webpackConfig: (0, devkit_1.joinPathFragments)(options.appProjectRoot, 'webpack.config.js'), generatePackageJson: options.isUsingTsSolutionConfig ? undefined : true, }, configurations: { development: { outputHashing: 'none', }, production: { ...(options.docker && { generateLockfile: true }), }, }, }; } function getEsBuildConfig(project, options) { return { executor: '@nx/esbuild:esbuild', outputs: ['{options.outputPath}'], defaultConfiguration: 'production', options: { platform: 'node', outputPath: options.outputPath, // Use CJS for Node apps for widest compatibility. format: ['cjs'], bundle: false, main: (0, devkit_1.joinPathFragments)(project.sourceRoot, 'main' + (options.js ? '.js' : '.ts')), tsConfig: (0, devkit_1.joinPathFragments)(options.appProjectRoot, 'tsconfig.app.json'), assets: [(0, devkit_1.joinPathFragments)(project.sourceRoot, 'assets')], generatePackageJson: options.isUsingTsSolutionConfig ? undefined : true, esbuildOptions: { sourcemap: true, // Generate CJS files as .js so imports can be './foo' rather than './foo.cjs'. outExtension: { '.js': '.js' }, }, }, configurations: { development: {}, production: { ...(options.docker && { generateLockfile: true }), esbuildOptions: { sourcemap: false, // Generate CJS files as .js so imports can be './foo' rather than './foo.cjs'. outExtension: { '.js': '.js' }, }, }, }, }; } function getServeConfig(options) { return { continuous: true, executor: '@nx/js:node', defaultConfiguration: 'development', // Run build, which includes dependency on "^build" by default, so the first run // won't error out due to missing build artifacts. dependsOn: ['build'], options: { buildTarget: `${options.name}:build`, // Even though `false` is the default, set this option so users know it // exists if they want to always run dependencies during each rebuild. runBuildTargetDependencies: false, }, configurations: { development: { buildTarget: `${options.name}:build:development`, }, production: { buildTarget: `${options.name}:build:production`, }, }, }; } function getNestWebpackBuildConfig() { return { executor: 'nx:run-commands', options: { command: 'webpack-cli build', args: ['node-env=production'], }, configurations: { development: { args: ['node-env=development'], }, }, }; }