diff --git a/packages/@nodepack/service/package.json b/packages/@nodepack/service/package.json index 0a93ac2..77c1294 100644 --- a/packages/@nodepack/service/package.json +++ b/packages/@nodepack/service/package.json @@ -42,6 +42,7 @@ "cli-highlight": "^2.1.1", "cliui": "^5.0.0", "cosmiconfig": "^5.2.1", + "deasync": "^0.1.15", "dotenv": "^8.1.0", "execa": "^2.0.4", "find-up": "^4.1.0", diff --git a/packages/@nodepack/service/src/lib/Service.js b/packages/@nodepack/service/src/lib/Service.js index 120207c..75b584e 100644 --- a/packages/@nodepack/service/src/lib/Service.js +++ b/packages/@nodepack/service/src/lib/Service.js @@ -76,6 +76,9 @@ module.exports = class Service { /** @type {string} */ this.configPath = null + + // @ts-ignore + process.NODEPACK_SERVICE = this } resolvePlugins () { diff --git a/packages/@nodepack/service/weback.config.js b/packages/@nodepack/service/weback.config.js new file mode 100644 index 0000000..5d6c28e --- /dev/null +++ b/packages/@nodepack/service/weback.config.js @@ -0,0 +1,25 @@ +// this file is for cases where we need to access the +// webpack config as a file when using CLI commands. + +const deasync = require('deasync') + +async function resolve (cb) { + try { + /** @type {import('./src/lib/Service')} */ + let service = process.NODEPACK_SERVICE + + if (!service || process.env.NODEPACK_API_MODE) { + const Service = require('./src/lib/Service') + service = new Service(process.env.NODEPACK_CONTEXT || process.cwd()) + await service.init(process.env.NODEPACK_ENV || process.env.NODE_ENV || 'development') + } + + const config = await service.resolveWebpackConfig() + cb(null, config) + } catch (e) { + cb(e, null) + } +} + +const resolveWebpackConfig = deasync(resolve) +module.exports = resolveWebpackConfig()