Compare commits

...

8 Commits

Author SHA1 Message Date
a0032b8168 1.2.33 2019-05-12 18:52:23 +02:00
a09efd1125 fix(core): update 2019-05-12 18:52:23 +02:00
4ce28c7979 1.2.32 2019-05-12 18:30:33 +02:00
415eaea56e fix(bin name): change from npmdocker to tsdocker 2019-05-12 18:30:32 +02:00
bde4597dd9 1.2.31 2019-05-10 17:09:51 +02:00
80946d4f0c fix(core): update 2019-05-10 17:09:50 +02:00
2155e886ef 1.2.30 2019-05-10 11:46:38 +02:00
8b61a90b5f fix(core): update 2019-05-10 11:46:37 +02:00
7 changed files with 64 additions and 154 deletions

3
.gitignore vendored
View File

@ -16,4 +16,5 @@ dist_web/
dist_serve/ dist_serve/
dist_ts_web/ dist_ts_web/
# custom # custom
test/

3
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"typescript.tsdk": "node_modules/typescript/lib"
}

View File

@ -1,25 +1,20 @@
# npmdocker # @gitzone/npmdocker
develop npm modules cross platform with docker develop npm modules cross platform with docker
## Availabililty ## Availabililty and Links
* [npmjs.org (npm package)](https://www.npmjs.com/package/@gitzone/npmdocker)
[![npm](https://gitzone.gitlab.io/assets/repo-button-npm.svg)](https://www.npmjs.com/package/npmdocker) * [gitlab.com (source)](https://gitlab.com/gitzone/npmdocker)
[![git](https://gitzone.gitlab.io/assets/repo-button-git.svg)](https://GitLab.com/gitzone/npmdocker) * [github.com (source mirror)](https://github.com/gitzone/npmdocker)
[![git](https://gitzone.gitlab.io/assets/repo-button-mirror.svg)](https://github.com/gitzone/npmdocker) * [docs (typedoc)](https://gitzone.gitlab.io/npmdocker/)
[![docs](https://gitzone.gitlab.io/assets/repo-button-docs.svg)](https://gitzone.gitlab.io/npmdocker/)
## Status for master ## Status for master
[![build status](https://gitlab.com/gitzone/npmdocker/badges/master/build.svg)](https://gitlab.com/gitzone/npmdocker/commits/master)
[![build status](https://GitLab.com/gitzone/npmdocker/badges/master/build.svg)](https://GitLab.com/gitzone/npmdocker/commits/master) [![coverage report](https://gitlab.com/gitzone/npmdocker/badges/master/coverage.svg)](https://gitlab.com/gitzone/npmdocker/commits/master)
[![coverage report](https://GitLab.com/gitzone/npmdocker/badges/master/coverage.svg)](https://GitLab.com/gitzone/npmdocker/commits/master) [![npm downloads per month](https://img.shields.io/npm/dm/@gitzone/npmdocker.svg)](https://www.npmjs.com/package/@gitzone/npmdocker)
[![npm downloads per month](https://img.shields.io/npm/dm/npmdocker.svg)](https://www.npmjs.com/package/npmdocker) [![Known Vulnerabilities](https://snyk.io/test/npm/@gitzone/npmdocker/badge.svg)](https://snyk.io/test/npm/@gitzone/npmdocker)
[![Dependency Status](https://david-dm.org/gitzonetools/npmdocker.svg)](https://david-dm.org/gitzonetools/npmdocker) [![TypeScript](https://img.shields.io/badge/TypeScript->=%203.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
[![bitHound Dependencies](https://www.bithound.io/github/gitzonetools/npmdocker/badges/dependencies.svg)](https://www.bithound.io/github/gitzonetools/npmdocker/master/dependencies/npm) [![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
[![bitHound Code](https://www.bithound.io/github/gitzonetools/npmdocker/badges/code.svg)](https://www.bithound.io/github/gitzonetools/npmdocker) [![JavaScript Style Guide](https://img.shields.io/badge/code%20style-prettier-ff69b4.svg)](https://prettier.io/)
[![TypeScript](https://img.shields.io/badge/TypeScript-2.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![node](https://img.shields.io/badge/node->=%206.x.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
## Usage ## Usage
@ -34,10 +29,10 @@ Usually this is the default i CI, but locally behaviour tends to defer.
The npmdocker package works in everywhere where the docker cli is available. e.g.: The npmdocker package works in everywhere where the docker cli is available. e.g.:
* docker toolbox - docker toolbox
* native docker application - native docker application
* docker in docker - docker in docker
* mounted docker.sock - mounted docker.sock
### How do I use it? ### How do I use it?
@ -62,6 +57,6 @@ create a npmextra.json in the project's root directory
For further information read the linked docs at the top of this readme. For further information read the linked docs at the top of this readme.
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh) > MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
> | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html) | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
[![repo-footer](https://gitzone.gitlab.io/assets/repo-footer.svg)](https://git.zone) [![repo-footer](https://gitzone.gitlab.io/assets/repo-footer.svg)](https://maintainedby.lossless.com)

155
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "@gitzone/tsdocker", "name": "@gitzone/tsdocker",
"version": "1.2.29", "version": "1.2.33",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@ -137,14 +137,15 @@
} }
}, },
"@pushrocks/lik": { "@pushrocks/lik": {
"version": "3.0.1", "version": "3.0.5",
"resolved": "https://registry.npmjs.org/@pushrocks/lik/-/lik-3.0.1.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2flik/-/lik-3.0.5.tgz",
"integrity": "sha512-6dwRg7WMdY9drlqfo6NzOcw5ubVWYvIOSSMZz4Jsojpa8aDVwXd2VkD7sxO/PJRrbZzHkx/JXoY/epcWRjngUw==", "integrity": "sha512-pc5Nq0WUysS34qPpyiZXiX254kL3vyRVbt3D36Q5QU+eHhxAThHofSzgOdyVHUZU2WFoaMlKowIVsyUFzIkfdw==",
"requires": { "requires": {
"@pushrocks/smartdelay": "^2.0.2",
"@pushrocks/smartpromise": "^2.0.5", "@pushrocks/smartpromise": "^2.0.5",
"@types/lodash": "^4.14.112", "@pushrocks/smartrx": "^2.0.3",
"@pushrocks/smarttime": "^3.0.5",
"@types/minimatch": "^3.0.3", "@types/minimatch": "^3.0.3",
"lodash": "^4.17.10",
"minimatch": "^3.0.4", "minimatch": "^3.0.4",
"symbol-tree": "^3.2.2" "symbol-tree": "^3.2.2"
}, },
@ -153,80 +154,19 @@
"version": "2.0.5", "version": "2.0.5",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-2.0.5.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-2.0.5.tgz",
"integrity": "sha512-9j/chLtIiNkR0MDw7Mpxg9slxAVvAQwUZuiaPYX5KpHdKxQaHLI1VZ8IN0vPhwlfgNO4i4vGXV0wB8BvSDj03g==" "integrity": "sha512-9j/chLtIiNkR0MDw7Mpxg9slxAVvAQwUZuiaPYX5KpHdKxQaHLI1VZ8IN0vPhwlfgNO4i4vGXV0wB8BvSDj03g=="
},
"@types/lodash": {
"version": "4.14.116",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.116.tgz",
"integrity": "sha512-lRnAtKnxMXcYYXqOiotTmJd74uawNWuPnsnPrrO7HiFuE3npE2iQhfABatbYDyxTNqZNuXzcKGhw37R7RjBFLg=="
},
"@types/minimatch": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
"integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA=="
},
"lodash": {
"version": "4.17.11",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
} }
} }
}, },
"@pushrocks/npmextra": { "@pushrocks/npmextra": {
"version": "3.0.1", "version": "3.0.3",
"resolved": "https://registry.npmjs.org/@pushrocks/npmextra/-/npmextra-3.0.1.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fnpmextra/-/npmextra-3.0.3.tgz",
"integrity": "sha512-BEqmVD1a9qzMkJJiNlRVqWxM553F3aAjOIr9eOFNG8rtXPhEdHowXiLRDHctwBISLeNkA0qe6vjUvOtixkXEWA==", "integrity": "sha512-ct463kkSLGDxUtJhPH2YOa7jcMiCka8JLjK6StkhflJX4iS1VCodWBv20/twIRgLe4fGCOLLqeikXmYd1+ye2g==",
"requires": { "requires": {
"@pushrocks/smartfile": "^6.0.8", "@pushrocks/smartfile": "^7.0.2",
"@pushrocks/smartlog": "^2.0.1", "@pushrocks/smartlog": "^2.0.19",
"@pushrocks/smartpath": "^4.0.1", "@pushrocks/smartpath": "^4.0.1",
"@pushrocks/smartpromise": "^2.0.5", "@pushrocks/smartpromise": "^3.0.2",
"@pushrocks/taskbuffer": "^2.0.5", "@pushrocks/taskbuffer": "^2.0.7"
"smartlodash": "^1.0.1"
},
"dependencies": {
"@pushrocks/smartfile": {
"version": "6.0.12",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartfile/-/smartfile-6.0.12.tgz",
"integrity": "sha512-89abBQgZ/90YWTjVD2ZMkgO4Em4XM0xLf1wPBG4s1yVCdwBSrVX/Eg1EvHyNEk7lbule0NoBmCAvHcIb95FRXQ==",
"requires": {
"@pushrocks/smartpath": "^4.0.1",
"@pushrocks/smartpromise": "^2.0.5",
"@pushrocks/smartrequest": "^1.1.14",
"@types/fs-extra": "^5.0.4",
"@types/vinyl": "^2.0.2",
"fs-extra": "^7.0.1",
"glob": "^7.1.3",
"js-yaml": "^3.12.1",
"vinyl-file": "^3.0.0"
}
},
"@pushrocks/smartpromise": {
"version": "2.0.5",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-2.0.5.tgz",
"integrity": "sha512-9j/chLtIiNkR0MDw7Mpxg9slxAVvAQwUZuiaPYX5KpHdKxQaHLI1VZ8IN0vPhwlfgNO4i4vGXV0wB8BvSDj03g=="
},
"glob": {
"version": "7.1.4",
"resolved": "https://verdaccio.lossless.one/glob/-/glob-7.1.4.tgz",
"integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"js-yaml": {
"version": "3.13.1",
"resolved": "https://verdaccio.lossless.one/js-yaml/-/js-yaml-3.13.1.tgz",
"integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
"requires": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
}
}
} }
}, },
"@pushrocks/projectinfo": { "@pushrocks/projectinfo": {
@ -697,31 +637,23 @@
} }
}, },
"@pushrocks/taskbuffer": { "@pushrocks/taskbuffer": {
"version": "2.0.5", "version": "2.0.7",
"resolved": "https://registry.npmjs.org/@pushrocks/taskbuffer/-/taskbuffer-2.0.5.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2ftaskbuffer/-/taskbuffer-2.0.7.tgz",
"integrity": "sha512-frzuSoz7Lhlt4y+5vP513BJ/blSalkLH1A4Es0QtxQ6258ekxP/FWC7Bq0Hy7XnNDIlws0WDvd1KN2prSIKZDg==", "integrity": "sha512-raFDtJqfn4ugb4R+tJ3Dx1dXTav6Wu9KQgaAV5leftXdKU7DKMzk0YeDPOmgvWvqUzqs0njZl1K/6QpAljfd/A==",
"requires": { "requires": {
"@pushrocks/lik": "^3.0.1", "@pushrocks/lik": "^3.0.4",
"@pushrocks/smartdelay": "^2.0.1", "@pushrocks/smartdelay": "^2.0.2",
"@pushrocks/smartlog": "^2.0.1", "@pushrocks/smartlog": "^2.0.9",
"@pushrocks/smartpromise": "^2.0.5", "@pushrocks/smartpromise": "^2.0.5",
"@types/cron": "^1.3.0", "@types/cron": "^1.3.0",
"cron": "^1.3.0", "cron": "^1.6.0",
"rxjs": "^6.2.2" "rxjs": "^6.3.3"
}, },
"dependencies": { "dependencies": {
"@pushrocks/smartpromise": { "@pushrocks/smartpromise": {
"version": "2.0.5", "version": "2.0.5",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-2.0.5.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-2.0.5.tgz",
"integrity": "sha512-9j/chLtIiNkR0MDw7Mpxg9slxAVvAQwUZuiaPYX5KpHdKxQaHLI1VZ8IN0vPhwlfgNO4i4vGXV0wB8BvSDj03g==" "integrity": "sha512-9j/chLtIiNkR0MDw7Mpxg9slxAVvAQwUZuiaPYX5KpHdKxQaHLI1VZ8IN0vPhwlfgNO4i4vGXV0wB8BvSDj03g=="
},
"rxjs": {
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.2.tgz",
"integrity": "sha512-hV7criqbR0pe7EeL3O66UYVg92IR0XsA97+9y+BWTePK9SKmEI5Qd3Zj6uPnGkNzXsBywBQWTvujPl+1Kn9Zjw==",
"requires": {
"tslib": "^1.9.0"
}
} }
} }
}, },
@ -750,9 +682,13 @@
} }
}, },
"@types/cron": { "@types/cron": {
"version": "1.3.0", "version": "1.7.0",
"resolved": "https://registry.npmjs.org/@types/cron/-/cron-1.3.0.tgz", "resolved": "https://verdaccio.lossless.one/@types%2fcron/-/cron-1.7.0.tgz",
"integrity": "sha512-RNJ6Hbxs9CbUw+Bxt8kpN8/yNlYG1xli0JZSO1xTJJxFjgD2KWctFSkJeJpjf9iLJU0jeNPoJ5LEru7eBN3xuA==" "integrity": "sha512-LRu/XiiOExELholyEwEuSTPAEiO+sVR1nXmWEjezneGgYpDyMNVIsjiaHYBoCEUJo4F1hCOlAzQAh80iEUVbKw==",
"requires": {
"@types/node": "*",
"moment": ">=2.14.0"
}
}, },
"@types/events": { "@types/events": {
"version": "3.0.0", "version": "3.0.0",
@ -791,11 +727,6 @@
"@types/node": "*" "@types/node": "*"
} }
}, },
"@types/lodash": {
"version": "4.14.77",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.77.tgz",
"integrity": "sha512-sRCTcVQkIiQqRoQcazgN2PvRLS7d9BnSl8elRZR5UYlpm6XgU8F4j/0csz8WoaKKTUqa6rSuOy3Vph7AHfX7KQ=="
},
"@types/luxon": { "@types/luxon": {
"version": "1.12.0", "version": "1.12.0",
"resolved": "https://verdaccio.lossless.one/@types%2fluxon/-/luxon-1.12.0.tgz", "resolved": "https://verdaccio.lossless.one/@types%2fluxon/-/luxon-1.12.0.tgz",
@ -1070,9 +1001,9 @@
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
}, },
"cron": { "cron": {
"version": "1.3.0", "version": "1.7.1",
"resolved": "https://registry.npmjs.org/cron/-/cron-1.3.0.tgz", "resolved": "https://verdaccio.lossless.one/cron/-/cron-1.7.1.tgz",
"integrity": "sha512-K/SF7JlgMmNjcThWxkKvsHhey2EDB4CeOEWJ9aXWj3fbQJppsvTPIeyLdHfNq5IbbsMUUjRW1nr5dSO95f2E4w==", "integrity": "sha512-gmMB/pJcqUVs/NklR1sCGlNYM7TizEw+1gebz20BMc/8bTm/r7QUp3ZPSPlG8Z5XRlvb7qhjEjq/+bdIfUCL2A==",
"requires": { "requires": {
"moment-timezone": "^0.5.x" "moment-timezone": "^0.5.x"
} }
@ -1406,11 +1337,6 @@
"path-exists": "^3.0.0" "path-exists": "^3.0.0"
} }
}, },
"lodash": {
"version": "4.17.4",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
"integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
},
"log-symbols": { "log-symbols": {
"version": "2.2.0", "version": "2.2.0",
"resolved": "https://verdaccio.lossless.one/log-symbols/-/log-symbols-2.2.0.tgz", "resolved": "https://verdaccio.lossless.one/log-symbols/-/log-symbols-2.2.0.tgz",
@ -1828,23 +1754,6 @@
"chai-string": "^1.4.0" "chai-string": "^1.4.0"
} }
}, },
"smartlodash": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/smartlodash/-/smartlodash-1.0.1.tgz",
"integrity": "sha512-pXy7CD1jrRJ4JKCPiamFb+uqOgqqItJbksF6djqW/83ZG7ChLYPLkQOX/9D5FzU5JylHVs+xdQ6bSprcNQfEng==",
"requires": {
"@types/lodash": "^4.14.68",
"@types/node": "^8.0.10",
"lodash": "^4.17.4"
},
"dependencies": {
"@types/node": {
"version": "8.10.29",
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.29.tgz",
"integrity": "sha512-zbteaWZ2mdduacm0byELwtRyhYE40aK+pAanQk415gr1eRuu67x7QGOLmn8jz5zI8LDK7d0WI/oT6r5Trz4rzQ=="
}
}
},
"source-map": { "source-map": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",

View File

@ -1,12 +1,12 @@
{ {
"name": "@gitzone/tsdocker", "name": "@gitzone/tsdocker",
"version": "1.2.29", "version": "1.2.33",
"private": false, "private": false,
"description": "develop npm modules cross platform with docker", "description": "develop npm modules cross platform with docker",
"main": "dist/index.js", "main": "dist/index.js",
"typings": "dist/index.d.ts", "typings": "dist/index.d.ts",
"bin": { "bin": {
"npmdocker": "cli.js" "tsdocker": "cli.js"
}, },
"scripts": { "scripts": {
"test": "(npm run clean && npm run setupCheck && npm run testStandard && npm run testSpeed)", "test": "(npm run clean && npm run setupCheck && npm run testStandard && npm run testSpeed)",
@ -42,7 +42,7 @@
"tslint-config-prettier": "^1.18.0" "tslint-config-prettier": "^1.18.0"
}, },
"dependencies": { "dependencies": {
"@pushrocks/npmextra": "^3.0.1", "@pushrocks/npmextra": "^3.0.3",
"@pushrocks/projectinfo": "^4.0.2", "@pushrocks/projectinfo": "^4.0.2",
"@pushrocks/qenv": "^4.0.0", "@pushrocks/qenv": "^4.0.0",
"@pushrocks/smartanalytics": "^2.0.15", "@pushrocks/smartanalytics": "^2.0.15",

View File

@ -78,7 +78,9 @@ export let run = () => {
}); });
logger.log('ok', `Starting vscode in cwd ${paths.cwd}`); logger.log('ok', `Starting vscode in cwd ${paths.cwd}`);
await smartshellInstance.execAndWaitForLine( await smartshellInstance.execAndWaitForLine(
`docker run -p 127.0.0.1:8443:8443 -v "${paths.cwd}:/home/coder/project" registry.gitlab.com/hosttoday/ht-docker-vscode --allow-http --no-auth`, `docker run -p 127.0.0.1:8443:8443 -v "${
paths.cwd
}:/home/coder/project" registry.gitlab.com/hosttoday/ht-docker-vscode --allow-http --no-auth`,
/Connected to shared process/ /Connected to shared process/
); );
await plugins.smartopen.openUrl('testing-vscode.git.zone:8443'); await plugins.smartopen.openUrl('testing-vscode.git.zone:8443');

View File

@ -10,7 +10,7 @@ export interface IConfig {
} }
const getQenvKeyValueObject = async () => { const getQenvKeyValueObject = async () => {
let qenvKeyValueObjectArray: {[key: string]: string | number}; let qenvKeyValueObjectArray: { [key: string]: string | number };
if (plugins.smartfile.fs.fileExistsSync(plugins.path.join(paths.cwd, 'qenv.yml'))) { if (plugins.smartfile.fs.fileExistsSync(plugins.path.join(paths.cwd, 'qenv.yml'))) {
qenvKeyValueObjectArray = new plugins.qenv.Qenv(paths.cwd, '.nogit/').keyValueObject; qenvKeyValueObjectArray = new plugins.qenv.Qenv(paths.cwd, '.nogit/').keyValueObject;
} else { } else {
@ -19,7 +19,7 @@ const getQenvKeyValueObject = async () => {
return qenvKeyValueObjectArray; return qenvKeyValueObjectArray;
}; };
const buildConfig = async (qenvKeyValueObjectArg: {[key: string]: string | number}) => { const buildConfig = async (qenvKeyValueObjectArg: { [key: string]: string | number }) => {
const npmextra = new plugins.npmextra.Npmextra(paths.cwd); const npmextra = new plugins.npmextra.Npmextra(paths.cwd);
const config = npmextra.dataFor<IConfig>('npmdocker', { const config = npmextra.dataFor<IConfig>('npmdocker', {
baseImage: 'hosttoday/ht-docker-node:npmdocker', baseImage: 'hosttoday/ht-docker-node:npmdocker',