UNPKG

@nx/webpack

Version:

The Nx Plugin for Webpack contains executors and generators that support building applications using Webpack.

46 lines (45 loc) 2.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GeneratePackageJsonPlugin = void 0; const webpack_1 = require("webpack"); const js_1 = require("@nx/js"); const devkit_1 = require("@nx/devkit"); const pluginName = 'GeneratePackageJsonPlugin'; class GeneratePackageJsonPlugin { constructor(options) { this.options = options; } apply(compiler) { compiler.hooks.thisCompilation.tap(pluginName, (compilation) => { compilation.hooks.processAssets.tap({ name: pluginName, stage: compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL, }, () => { const helperDependencies = (0, js_1.getHelperDependenciesFromProjectGraph)(this.options.root, this.options.projectName, this.options.projectGraph); const importHelpers = !!(0, js_1.readTsConfig)(this.options.tsConfig).options .importHelpers; const shouldAddHelperDependency = importHelpers && helperDependencies.every((dep) => dep.target !== js_1.HelperDependency.tsc); if (shouldAddHelperDependency) { helperDependencies.push({ type: 'static', source: this.options.projectName, target: js_1.HelperDependency.tsc, }); } const packageJson = (0, js_1.createPackageJson)(this.options.projectName, this.options.projectGraph, { target: this.options.targetName, root: this.options.root, isProduction: true, helperDependencies: helperDependencies.map((dep) => dep.target), skipPackageManager: this.options.skipPackageManager, }); packageJson.main = packageJson.main ?? this.options.outputFileName; compilation.emitAsset('package.json', new webpack_1.sources.RawSource((0, devkit_1.serializeJson)(packageJson))); const packageManager = (0, devkit_1.detectPackageManager)(this.options.root); compilation.emitAsset((0, js_1.getLockFileName)(packageManager), new webpack_1.sources.RawSource((0, js_1.createLockFile)(packageJson, this.options.projectGraph, packageManager))); }); }); } } exports.GeneratePackageJsonPlugin = GeneratePackageJsonPlugin;