@jsenv/package-publish 1.7.2 → 1.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -13
- package/readme.md +3 -5
- package/src/internal/publish.js +22 -30
- package/src/internal/readProjectPackage.js +3 -3
- package/src/publishPackage.js +5 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsenv/package-publish",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.3",
|
|
4
4
|
"description": "Publish package to one or many registry.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -34,26 +34,15 @@
|
|
|
34
34
|
],
|
|
35
35
|
"scripts": {
|
|
36
36
|
"eslint": "npx eslint . --ext=.js,.mjs",
|
|
37
|
-
"importmap": "node ./script/importmap/importmap.mjs",
|
|
38
37
|
"test": "node --experimental-json-modules ./script/test/test.mjs",
|
|
39
38
|
"test-with-coverage": "npm run test -- --coverage",
|
|
40
39
|
"prettier": "prettier --write ."
|
|
41
40
|
},
|
|
42
41
|
"dependencies": {
|
|
43
|
-
"@jsenv/filesystem": "
|
|
42
|
+
"@jsenv/filesystem": "3.1.0",
|
|
44
43
|
"@jsenv/logger": "4.0.1",
|
|
45
44
|
"node-fetch": "2.6.7",
|
|
46
45
|
"@jsenv/log": "1.5.0",
|
|
47
46
|
"semver": "7.3.5"
|
|
48
|
-
},
|
|
49
|
-
"devDependencies": {
|
|
50
|
-
"@jsenv/assert": "2.4.1",
|
|
51
|
-
"@jsenv/core": "25.3.0",
|
|
52
|
-
"@jsenv/eslint-config": "16.0.9",
|
|
53
|
-
"@jsenv/importmap-eslint-resolver": "5.2.5",
|
|
54
|
-
"@jsenv/importmap-node-module": "5.1.3",
|
|
55
|
-
"eslint": "8.7.0",
|
|
56
|
-
"eslint-plugin-import": "2.25.4",
|
|
57
|
-
"prettier": "2.5.1"
|
|
58
47
|
}
|
|
59
48
|
}
|
package/readme.md
CHANGED
|
@@ -13,8 +13,6 @@ Screenshot taken inside a github workflow when the package.json version is alrea
|
|
|
13
13
|
|
|
14
14
|
Screenshot taken inside a github workflow when the package.json version is not published: 
|
|
15
15
|
|
|
16
|
-
This package is using itself to be published on NPM. It is done during ["publish package" step](https://github.com/jsenv/package-publish/blob/0170a5c859c4732203ff2f3e70b85e705396ccc7/.github/workflows/main.yml#L70-L74) in GitHub worflow.
|
|
17
|
-
|
|
18
16
|
# Installation
|
|
19
17
|
|
|
20
18
|
```console
|
|
@@ -31,7 +29,7 @@ _publishPackage_ is an async function publishing a package on one or many regist
|
|
|
31
29
|
import { publishPackage } from "@jsenv/package-publish"
|
|
32
30
|
|
|
33
31
|
const publishReport = await publishPackage({
|
|
34
|
-
|
|
32
|
+
rootDirectoryUrl: new URL('./', import.meta.url)
|
|
35
33
|
registriesConfig: {
|
|
36
34
|
"https://registry.npmjs.org": {
|
|
37
35
|
token: process.env.NPM_TOKEN,
|
|
@@ -43,9 +41,9 @@ const publishReport = await publishPackage({
|
|
|
43
41
|
})
|
|
44
42
|
```
|
|
45
43
|
|
|
46
|
-
##
|
|
44
|
+
## rootDirectoryUrl
|
|
47
45
|
|
|
48
|
-
|
|
46
|
+
_rootDirectoryUrl_ parameter is a string leading to a directory containing the package.json.
|
|
49
47
|
|
|
50
48
|
This parameter is **required**.
|
|
51
49
|
|
package/src/internal/publish.js
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
urlToFileSystemPath,
|
|
5
5
|
readFile,
|
|
6
6
|
writeFile,
|
|
7
|
-
|
|
7
|
+
removeEntry,
|
|
8
8
|
} from "@jsenv/filesystem"
|
|
9
9
|
import { UNICODE } from "@jsenv/log"
|
|
10
10
|
|
|
@@ -14,7 +14,7 @@ export const publish = async ({
|
|
|
14
14
|
logger,
|
|
15
15
|
packageSlug,
|
|
16
16
|
logNpmPublishOutput,
|
|
17
|
-
|
|
17
|
+
rootDirectoryUrl,
|
|
18
18
|
registryUrl,
|
|
19
19
|
token,
|
|
20
20
|
}) => {
|
|
@@ -26,37 +26,29 @@ export const publish = async ({
|
|
|
26
26
|
process.env.NODE_AUTH_TOKEN = previousValue
|
|
27
27
|
}
|
|
28
28
|
process.env.NODE_AUTH_TOKEN = token
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const projectPackageObject = JSON.parse(projectPackageString)
|
|
37
|
-
projectPackageObject.publishConfig =
|
|
38
|
-
projectPackageObject.publishConfig || {}
|
|
39
|
-
projectPackageObject.publishConfig.registry = registryUrl
|
|
29
|
+
const rootPackageFileUrl = resolveUrl("./package.json", rootDirectoryUrl)
|
|
30
|
+
const rootPackageString = await readFile(rootPackageFileUrl)
|
|
31
|
+
const restorePackageFile = () =>
|
|
32
|
+
writeFile(rootPackageFileUrl, rootPackageString)
|
|
33
|
+
const packageObject = JSON.parse(rootPackageString)
|
|
34
|
+
packageObject.publishConfig = packageObject.publishConfig || {}
|
|
35
|
+
packageObject.publishConfig.registry = registryUrl
|
|
40
36
|
promises.push(
|
|
41
37
|
writeFile(
|
|
42
|
-
|
|
43
|
-
JSON.stringify(
|
|
38
|
+
rootPackageFileUrl,
|
|
39
|
+
JSON.stringify(packageObject, null, " "),
|
|
44
40
|
),
|
|
45
41
|
)
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
projectDirectoryUrl,
|
|
49
|
-
)
|
|
50
|
-
let restoreProjectNpmConfigFile
|
|
42
|
+
const npmConfigFileUrl = resolveUrl("./.npmrc", rootDirectoryUrl)
|
|
43
|
+
let restoreNpmConfigFile
|
|
51
44
|
let projectNpmConfigString
|
|
52
45
|
try {
|
|
53
|
-
projectNpmConfigString = await readFile(
|
|
54
|
-
|
|
55
|
-
writeFile(
|
|
46
|
+
projectNpmConfigString = await readFile(npmConfigFileUrl)
|
|
47
|
+
restoreNpmConfigFile = () =>
|
|
48
|
+
writeFile(npmConfigFileUrl, projectNpmConfigString)
|
|
56
49
|
} catch (e) {
|
|
57
50
|
if (e.code === "ENOENT") {
|
|
58
|
-
|
|
59
|
-
removeFileSystemNode(projectNpmConfigFileUrl)
|
|
51
|
+
restoreNpmConfigFile = () => removeEntry(npmConfigFileUrl)
|
|
60
52
|
projectNpmConfigString = ""
|
|
61
53
|
} else {
|
|
62
54
|
throw e
|
|
@@ -64,10 +56,10 @@ export const publish = async ({
|
|
|
64
56
|
}
|
|
65
57
|
promises.push(
|
|
66
58
|
writeFile(
|
|
67
|
-
|
|
59
|
+
npmConfigFileUrl,
|
|
68
60
|
setNpmConfig(projectNpmConfigString, {
|
|
69
61
|
[computeRegistryTokenKey(registryUrl)]: token,
|
|
70
|
-
[computeRegistryKey(
|
|
62
|
+
[computeRegistryKey(packageObject.name)]: registryUrl,
|
|
71
63
|
}),
|
|
72
64
|
),
|
|
73
65
|
)
|
|
@@ -77,7 +69,7 @@ export const publish = async ({
|
|
|
77
69
|
const command = exec(
|
|
78
70
|
"npm publish",
|
|
79
71
|
{
|
|
80
|
-
cwd: urlToFileSystemPath(
|
|
72
|
+
cwd: urlToFileSystemPath(rootDirectoryUrl),
|
|
81
73
|
stdio: "silent",
|
|
82
74
|
},
|
|
83
75
|
(error) => {
|
|
@@ -150,8 +142,8 @@ export const publish = async ({
|
|
|
150
142
|
} finally {
|
|
151
143
|
await Promise.all([
|
|
152
144
|
restoreProcessEnv(),
|
|
153
|
-
|
|
154
|
-
|
|
145
|
+
restorePackageFile(),
|
|
146
|
+
restoreNpmConfigFile(),
|
|
155
147
|
])
|
|
156
148
|
}
|
|
157
149
|
} catch (e) {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { resolveUrl, urlToFileSystemPath, readFile } from "@jsenv/filesystem"
|
|
2
2
|
|
|
3
|
-
export const readProjectPackage = async ({
|
|
4
|
-
const packageFileUrl = resolveUrl("./package.json",
|
|
3
|
+
export const readProjectPackage = async ({ rootDirectoryUrl }) => {
|
|
4
|
+
const packageFileUrl = resolveUrl("./package.json", rootDirectoryUrl)
|
|
5
5
|
let packageObject
|
|
6
6
|
try {
|
|
7
|
-
const packageString = await readFile(packageFileUrl)
|
|
7
|
+
const packageString = await readFile(packageFileUrl, { as: "string" })
|
|
8
8
|
try {
|
|
9
9
|
packageObject = JSON.parse(packageString)
|
|
10
10
|
} catch (e) {
|
package/src/publishPackage.js
CHANGED
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
|
|
16
16
|
export const publishPackage = async ({
|
|
17
17
|
logLevel,
|
|
18
|
-
|
|
18
|
+
rootDirectoryUrl,
|
|
19
19
|
registriesConfig,
|
|
20
20
|
logNpmPublishOutput = true,
|
|
21
21
|
updateProcessExitCode = true,
|
|
@@ -23,17 +23,17 @@ export const publishPackage = async ({
|
|
|
23
23
|
const logger = createLogger({ logLevel })
|
|
24
24
|
logger.debug(
|
|
25
25
|
`publishPackage(${JSON.stringify(
|
|
26
|
-
{
|
|
26
|
+
{ rootDirectoryUrl, logLevel, registriesConfig },
|
|
27
27
|
null,
|
|
28
28
|
" ",
|
|
29
29
|
)})`,
|
|
30
30
|
)
|
|
31
|
-
|
|
31
|
+
rootDirectoryUrl = assertAndNormalizeDirectoryUrl(rootDirectoryUrl)
|
|
32
32
|
assertRegistriesConfig(registriesConfig)
|
|
33
33
|
|
|
34
34
|
logger.debug(`reading project package.json`)
|
|
35
35
|
const packageInProject = await readProjectPackage({
|
|
36
|
-
|
|
36
|
+
rootDirectoryUrl,
|
|
37
37
|
})
|
|
38
38
|
|
|
39
39
|
const { name: packageName, version: packageVersion } = packageInProject
|
|
@@ -140,7 +140,7 @@ ${actionReason.stack}`)
|
|
|
140
140
|
logger,
|
|
141
141
|
packageSlug: `${packageName}@${packageVersion}`,
|
|
142
142
|
logNpmPublishOutput,
|
|
143
|
-
|
|
143
|
+
rootDirectoryUrl,
|
|
144
144
|
registryUrl,
|
|
145
145
|
...registriesConfig[registryUrl],
|
|
146
146
|
})
|