forked from sombochea/verdaccio-ui
Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
233ba196a0 | ||
|
|
c9fb3c4c50 | ||
|
|
3d752e079c | ||
|
|
7f07a322f4 | ||
|
|
9ffa6290cc | ||
|
|
47b98c5550 | ||
|
|
da4ac7e851 | ||
|
|
c960fa76db | ||
|
|
5e43ac0d49 | ||
|
|
4e899a8574 | ||
|
|
01daf73bbf | ||
|
|
a89f363115 | ||
|
|
c3eac3d27b | ||
|
|
9d7be476ad | ||
|
|
1070e5c3aa |
168
.circleci/config.yml
Normal file
168
.circleci/config.yml
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
version: 2
|
||||||
|
|
||||||
|
aliases:
|
||||||
|
- &defaults
|
||||||
|
working_directory: ~/ui-theme
|
||||||
|
- &node11_executor
|
||||||
|
docker:
|
||||||
|
- image: circleci/node:11.10.1
|
||||||
|
- &node8_executor
|
||||||
|
docker:
|
||||||
|
- image: circleci/node:8
|
||||||
|
- &node10_executor
|
||||||
|
docker:
|
||||||
|
- image: circleci/node:10
|
||||||
|
- &default_executor
|
||||||
|
<<: *node10_executor
|
||||||
|
- &repo_key
|
||||||
|
repo-{{ .Branch }}-{{ .Revision }}
|
||||||
|
- &coverage_key
|
||||||
|
coverage-{{ .Branch }}-{{ .Revision }}
|
||||||
|
- &base_config_key
|
||||||
|
base-config-{{ .Branch }}-{{ .Revision }}
|
||||||
|
- &yarn_cache_key
|
||||||
|
yarn-sha-{{ checksum "yarn.lock" }}
|
||||||
|
- &restore_repo
|
||||||
|
restore_cache:
|
||||||
|
keys:
|
||||||
|
- *repo_key
|
||||||
|
- &ignore_non_dev_branches
|
||||||
|
filters:
|
||||||
|
tags:
|
||||||
|
only: /.*/
|
||||||
|
branches:
|
||||||
|
ignore:
|
||||||
|
- /release\/.*/
|
||||||
|
- &execute_on_release
|
||||||
|
filters:
|
||||||
|
tags:
|
||||||
|
only: /(v)?[0-9]+(\.[0-9]+)*/
|
||||||
|
branches:
|
||||||
|
ignore:
|
||||||
|
- /.*/
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
prepare:
|
||||||
|
<<: *defaults
|
||||||
|
<<: *default_executor
|
||||||
|
steps:
|
||||||
|
- *restore_repo
|
||||||
|
- checkout
|
||||||
|
- restore_cache:
|
||||||
|
key: *base_config_key
|
||||||
|
- run:
|
||||||
|
name: 'Base environment setup'
|
||||||
|
command: echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc
|
||||||
|
- save_cache:
|
||||||
|
key: *base_config_key
|
||||||
|
paths:
|
||||||
|
- ~/.npmrc
|
||||||
|
- ~/.gitconfig
|
||||||
|
- restore_cache:
|
||||||
|
key: *yarn_cache_key
|
||||||
|
- run:
|
||||||
|
name: Install Js dependencies
|
||||||
|
command: yarn install --no-progress --registry https://registry.verdaccio.org --no-lockfile
|
||||||
|
- run:
|
||||||
|
name: Build project
|
||||||
|
command: yarn run build
|
||||||
|
- save_cache:
|
||||||
|
key: *yarn_cache_key
|
||||||
|
paths:
|
||||||
|
- ~/.yarn
|
||||||
|
- ~/.cache/yarn
|
||||||
|
- node_modules
|
||||||
|
- save_cache:
|
||||||
|
key: *repo_key
|
||||||
|
paths:
|
||||||
|
- ~/ui-theme
|
||||||
|
|
||||||
|
test_node11:
|
||||||
|
<<: *defaults
|
||||||
|
<<: *node11_executor
|
||||||
|
steps:
|
||||||
|
- *restore_repo
|
||||||
|
- run:
|
||||||
|
name: Test with Node 11
|
||||||
|
command: yarn run test
|
||||||
|
|
||||||
|
test_node8:
|
||||||
|
<<: *defaults
|
||||||
|
<<: *node8_executor
|
||||||
|
steps:
|
||||||
|
- *restore_repo
|
||||||
|
- run:
|
||||||
|
name: Test with Node 8
|
||||||
|
command: yarn test
|
||||||
|
|
||||||
|
test_node10:
|
||||||
|
<<: *defaults
|
||||||
|
<<: *node10_executor
|
||||||
|
steps:
|
||||||
|
- *restore_repo
|
||||||
|
- run:
|
||||||
|
name: Test with Node 10
|
||||||
|
command: yarn run test
|
||||||
|
- save_cache:
|
||||||
|
key: *coverage_key
|
||||||
|
paths:
|
||||||
|
- coverage
|
||||||
|
|
||||||
|
coverage:
|
||||||
|
<<: *defaults
|
||||||
|
<<: *default_executor
|
||||||
|
steps:
|
||||||
|
- *restore_repo
|
||||||
|
- restore_cache:
|
||||||
|
key: *coverage_key
|
||||||
|
- run:
|
||||||
|
name: Publish coverage
|
||||||
|
command: yarn run coverage:publish
|
||||||
|
- store_artifacts:
|
||||||
|
path: coverage/clover.xml
|
||||||
|
prefix: tests
|
||||||
|
- store_artifacts:
|
||||||
|
path: coverage
|
||||||
|
prefix: coverage
|
||||||
|
- store_test_results:
|
||||||
|
path: coverage/clover.xml
|
||||||
|
|
||||||
|
publish_package:
|
||||||
|
<<: *defaults
|
||||||
|
<<: *default_executor
|
||||||
|
steps:
|
||||||
|
- *restore_repo
|
||||||
|
- restore_cache:
|
||||||
|
key: *base_config_key
|
||||||
|
- run:
|
||||||
|
name: Publish
|
||||||
|
command: yarn publish
|
||||||
|
|
||||||
|
workflows:
|
||||||
|
version: 2
|
||||||
|
workflow:
|
||||||
|
jobs:
|
||||||
|
- prepare:
|
||||||
|
<<: *ignore_non_dev_branches
|
||||||
|
- test_node11:
|
||||||
|
requires:
|
||||||
|
- prepare
|
||||||
|
<<: *ignore_non_dev_branches
|
||||||
|
- test_node8:
|
||||||
|
requires:
|
||||||
|
- prepare
|
||||||
|
<<: *ignore_non_dev_branches
|
||||||
|
- test_node10:
|
||||||
|
requires:
|
||||||
|
- prepare
|
||||||
|
<<: *ignore_non_dev_branches
|
||||||
|
- coverage:
|
||||||
|
requires:
|
||||||
|
- test_node11
|
||||||
|
- test_node8
|
||||||
|
- test_node10
|
||||||
|
<<: *ignore_non_dev_branches
|
||||||
|
- publish_package:
|
||||||
|
requires:
|
||||||
|
- coverage
|
||||||
|
<<: *execute_on_release
|
||||||
192
.github/main.workflow
vendored
192
.github/main.workflow
vendored
@@ -1,79 +1,215 @@
|
|||||||
workflow "build and test" {
|
################################################
|
||||||
|
# Workflow for a branch push
|
||||||
|
################################################
|
||||||
|
workflow "build and test on branch" {
|
||||||
resolves = [
|
resolves = [
|
||||||
"lint",
|
"branch.lint.node.10",
|
||||||
"test",
|
"branch.test.node.10",
|
||||||
"branch-filter",
|
"branch.test.node.8",
|
||||||
|
# "branch.test.node.12"
|
||||||
]
|
]
|
||||||
on = "push"
|
on = "push"
|
||||||
}
|
}
|
||||||
|
|
||||||
action "branch-filter" {
|
# node 10
|
||||||
|
action "branch.filter" {
|
||||||
uses = "actions/bin/filter@master"
|
uses = "actions/bin/filter@master"
|
||||||
args = "branch"
|
args = "branch"
|
||||||
}
|
}
|
||||||
|
|
||||||
action "install" {
|
action "branch.install.node.10" {
|
||||||
|
needs = ["branch.filter"]
|
||||||
uses = "docker://node:10"
|
uses = "docker://node:10"
|
||||||
args = "yarn install"
|
args = "yarn install"
|
||||||
}
|
}
|
||||||
|
|
||||||
action "build" {
|
action "branch.build.node.10" {
|
||||||
uses = "docker://node:10"
|
uses = "docker://node:10"
|
||||||
needs = ["install"]
|
needs = ["branch.install.node.10"]
|
||||||
args = "yarn run build"
|
args = "yarn run build"
|
||||||
}
|
}
|
||||||
|
|
||||||
action "lint" {
|
action "branch.lint.node.10" {
|
||||||
uses = "docker://node:10"
|
uses = "docker://node:10"
|
||||||
needs = ["install"]
|
needs = ["branch.install.node.10"]
|
||||||
args = "yarn run lint"
|
args = "yarn run lint"
|
||||||
}
|
}
|
||||||
|
|
||||||
action "test" {
|
action "branch.test.node.10" {
|
||||||
uses = "docker://node:10"
|
uses = "docker://node:10"
|
||||||
needs = ["build"]
|
needs = ["branch.build.node.10"]
|
||||||
args = "yarn run test"
|
args = "yarn run test"
|
||||||
}
|
}
|
||||||
|
|
||||||
workflow "release" {
|
# node 8
|
||||||
|
action "branch.install.node.8" {
|
||||||
|
needs = ["branch.filter"]
|
||||||
|
uses = "docker://node:8"
|
||||||
|
args = "yarn install"
|
||||||
|
}
|
||||||
|
|
||||||
|
action "branch.build.node.8" {
|
||||||
|
uses = "docker://node:8"
|
||||||
|
needs = ["branch.install.node.8"]
|
||||||
|
args = "yarn run build"
|
||||||
|
}
|
||||||
|
|
||||||
|
action "branch.test.node.8" {
|
||||||
|
uses = "docker://node:8"
|
||||||
|
needs = ["branch.build.node.8"]
|
||||||
|
args = "yarn run test"
|
||||||
|
}
|
||||||
|
|
||||||
|
# @todo node 12
|
||||||
|
# action "branch.install.node.12" {
|
||||||
|
# needs = ["branch.filter"]
|
||||||
|
# uses = "docker://node:12"
|
||||||
|
# args = "yarn install"
|
||||||
|
# }
|
||||||
|
|
||||||
|
# action "branch.build.node.12" {
|
||||||
|
# uses = "docker://node:12"
|
||||||
|
# needs = ["branch.install.node.12"]
|
||||||
|
# args = "yarn run build"
|
||||||
|
# }
|
||||||
|
|
||||||
|
# action "branch.test.node.12" {
|
||||||
|
# uses = "docker://node:12"
|
||||||
|
# needs = ["branch.build.node.12"]
|
||||||
|
# args = "yarn run test"
|
||||||
|
# }
|
||||||
|
|
||||||
|
################################################
|
||||||
|
# Workflow for a Pull request
|
||||||
|
################################################
|
||||||
|
workflow "build and test on PR" {
|
||||||
resolves = [
|
resolves = [
|
||||||
"github-release",
|
"pr.lint.node.10",
|
||||||
"release:lint",
|
"pr.test.node.10",
|
||||||
|
"pr.test.node.8",
|
||||||
|
# "pr.test.node.12"
|
||||||
|
]
|
||||||
|
on = "pull_request"
|
||||||
|
}
|
||||||
|
|
||||||
|
# node 10
|
||||||
|
action "pr.filter" {
|
||||||
|
uses = "actions/bin/filter@master"
|
||||||
|
args = "action 'opened|synchronize|reopened'"
|
||||||
|
}
|
||||||
|
|
||||||
|
action "pr.install.node.10" {
|
||||||
|
needs = ["pr.filter"]
|
||||||
|
uses = "docker://node:10"
|
||||||
|
args = "yarn install"
|
||||||
|
}
|
||||||
|
|
||||||
|
action "pr.build.node.10" {
|
||||||
|
uses = "docker://node:10"
|
||||||
|
needs = ["pr.install.node.10"]
|
||||||
|
args = "yarn run build"
|
||||||
|
}
|
||||||
|
|
||||||
|
action "pr.lint.node.10" {
|
||||||
|
uses = "docker://node:10"
|
||||||
|
needs = ["pr.install.node.10"]
|
||||||
|
args = "yarn run lint"
|
||||||
|
}
|
||||||
|
|
||||||
|
action "pr.test.node.10" {
|
||||||
|
uses = "docker://node:10"
|
||||||
|
needs = ["pr.build.node.10"]
|
||||||
|
args = "yarn run test"
|
||||||
|
}
|
||||||
|
|
||||||
|
# node 8
|
||||||
|
action "pr.install.node.8" {
|
||||||
|
needs = ["pr.filter"]
|
||||||
|
uses = "docker://node:8"
|
||||||
|
args = "yarn install"
|
||||||
|
}
|
||||||
|
|
||||||
|
action "pr.build.node.8" {
|
||||||
|
uses = "docker://node:8"
|
||||||
|
needs = ["pr.install.node.8"]
|
||||||
|
args = "yarn run build"
|
||||||
|
}
|
||||||
|
|
||||||
|
action "pr.test.node.8" {
|
||||||
|
uses = "docker://node:8"
|
||||||
|
needs = ["pr.build.node.8"]
|
||||||
|
args = "yarn run test"
|
||||||
|
}
|
||||||
|
|
||||||
|
# @todo node 12
|
||||||
|
# action "pr.install.node.12" {
|
||||||
|
# needs = ["pr.filter"]
|
||||||
|
# uses = "docker://node:12"
|
||||||
|
# args = "yarn install"
|
||||||
|
# }
|
||||||
|
|
||||||
|
# action "pr.build.node.12" {
|
||||||
|
# uses = "docker://node:12"
|
||||||
|
# needs = ["pr.install.node.12"]
|
||||||
|
# args = "yarn run build"
|
||||||
|
# }
|
||||||
|
|
||||||
|
# action "pr.test.node.12" {
|
||||||
|
# uses = "docker://node:12"
|
||||||
|
# needs = ["pr.build.node.12"]
|
||||||
|
# args = "yarn run test"
|
||||||
|
# }
|
||||||
|
|
||||||
|
|
||||||
|
################################################
|
||||||
|
# Workflow for a github release when a tag is
|
||||||
|
# pushed
|
||||||
|
################################################
|
||||||
|
workflow "github release" {
|
||||||
|
resolves = [
|
||||||
|
"release.github",
|
||||||
|
"release.lint",
|
||||||
]
|
]
|
||||||
on = "push"
|
on = "push"
|
||||||
}
|
}
|
||||||
|
|
||||||
action "release:tag-filter" {
|
action "release.filter" {
|
||||||
uses = "actions/bin/filter@master"
|
uses = "actions/bin/filter@master"
|
||||||
args = "tag v*"
|
args = "tag v*"
|
||||||
}
|
}
|
||||||
|
|
||||||
action "release:install" {
|
action "release.install" {
|
||||||
uses = "docker://node:10"
|
uses = "docker://node:10"
|
||||||
needs = ["release:tag-filter"]
|
needs = ["release.filter"]
|
||||||
args = "yarn install"
|
args = "yarn install"
|
||||||
}
|
}
|
||||||
|
|
||||||
action "release:build" {
|
action "release.build" {
|
||||||
uses = "docker://node:10"
|
uses = "docker://node:10"
|
||||||
needs = ["release:install"]
|
needs = ["release.install"]
|
||||||
args = "yarn run build"
|
args = "yarn run build"
|
||||||
}
|
}
|
||||||
|
|
||||||
action "release:lint" {
|
action "release.lint" {
|
||||||
uses = "docker://node:10"
|
uses = "docker://node:10"
|
||||||
needs = ["release:install"]
|
needs = ["release.install"]
|
||||||
args = "yarn run lint"
|
args = "yarn run lint"
|
||||||
}
|
}
|
||||||
|
|
||||||
action "release:test" {
|
action "release.test" {
|
||||||
uses = "docker://node:10"
|
uses = "docker://node:10"
|
||||||
needs = ["release:build"]
|
needs = ["release.build"]
|
||||||
args = "yarn run test"
|
args = "yarn run test"
|
||||||
}
|
}
|
||||||
|
|
||||||
action "release:publish" {
|
action "release.auth" {
|
||||||
needs = ["release:test"]
|
needs = ["release.test"]
|
||||||
|
uses = "actions/bin/filter@master"
|
||||||
|
args = ["actor", "octocat", "torvalds"]
|
||||||
|
}
|
||||||
|
|
||||||
|
action "release.npm.publish" {
|
||||||
|
needs = ["release.auth"]
|
||||||
uses = "docker://node:10"
|
uses = "docker://node:10"
|
||||||
args = "sh scripts/publish.sh"
|
args = "sh scripts/publish.sh"
|
||||||
secrets = [
|
secrets = [
|
||||||
@@ -84,8 +220,8 @@ action "release:publish" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
action "github-release" {
|
action "release.github" {
|
||||||
needs = ["release:publish"]
|
needs = ["release.npm.publish"]
|
||||||
uses = "docker://node:10"
|
uses = "docker://node:10"
|
||||||
args = "sh scripts/github-release.sh"
|
args = "sh scripts/github-release.sh"
|
||||||
secrets = [
|
secrets = [
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
|
|
||||||
## npm
|
## npm
|
||||||
/*
|
/*
|
||||||
!/static/*
|
!/static/**/*
|
||||||
!index.js
|
!index.js
|
||||||
!README.md
|
!README.md
|
||||||
|
|
||||||
|
|||||||
35
CHANGELOG.md
35
CHANGELOG.md
@@ -2,6 +2,41 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
||||||
|
|
||||||
|
<a name="0.1.7"></a>
|
||||||
|
## [0.1.7](https://github.com/verdaccio/ui/compare/v0.1.6...v0.1.7) (2019-05-11)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* search suggestion container height ([#54](https://github.com/verdaccio/ui/issues/54)) ([c9fb3c4](https://github.com/verdaccio/ui/commit/c9fb3c4))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a name="0.1.6"></a>
|
||||||
|
## [0.1.6](https://github.com/verdaccio/ui/compare/v0.1.5...v0.1.6) (2019-05-07)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* pattern allow yarn to add all files on pack ([#50](https://github.com/verdaccio/ui/issues/50)) ([9ffa629](https://github.com/verdaccio/ui/commit/9ffa629))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a name="0.1.5"></a>
|
||||||
|
## [0.1.5](https://github.com/verdaccio/ui/compare/v0.1.4...v0.1.5) (2019-05-04)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a name="0.1.4"></a>
|
||||||
|
## [0.1.4](https://github.com/verdaccio/ui/compare/v0.1.3...v0.1.4) (2019-05-04)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a name="0.1.3"></a>
|
||||||
|
## [0.1.3](https://github.com/verdaccio/ui/compare/v0.1.2...v0.1.3) (2019-05-04)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="0.1.2"></a>
|
<a name="0.1.2"></a>
|
||||||
## [0.1.2](https://github.com/verdaccio/ui/compare/v0.1.1...v0.1.2) (2019-04-28)
|
## [0.1.2](https://github.com/verdaccio/ui/compare/v0.1.1...v0.1.2) (2019-04-28)
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ module.exports = {
|
|||||||
collectCoverage: true,
|
collectCoverage: true,
|
||||||
testEnvironment: 'jest-environment-jsdom-global',
|
testEnvironment: 'jest-environment-jsdom-global',
|
||||||
testURL: 'http://localhost',
|
testURL: 'http://localhost',
|
||||||
testRegex: '(test/unit/webui/.*\\.spec)\\.js',
|
testRegex: '(test/unit/.*\\.spec)\\.js',
|
||||||
setupFiles: [
|
setupFiles: [
|
||||||
'./test/unit/setup.js'
|
'./test/unit/setup.js'
|
||||||
],
|
],
|
||||||
@@ -35,6 +35,7 @@ module.exports = {
|
|||||||
'<rootDir>/build',
|
'<rootDir>/build',
|
||||||
],
|
],
|
||||||
snapshotSerializers: [
|
snapshotSerializers: [
|
||||||
|
'enzyme-to-json/serializer',
|
||||||
"jest-emotion"
|
"jest-emotion"
|
||||||
],
|
],
|
||||||
coveragePathIgnorePatterns: [
|
coveragePathIgnorePatterns: [
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@verdaccio/ui-theme",
|
"name": "@verdaccio/ui-theme",
|
||||||
"version": "0.1.2",
|
"version": "0.1.7",
|
||||||
"description": "Verdaccio User Interface",
|
"description": "Verdaccio User Interface",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Verdaccio Core Team"
|
"name": "Verdaccio Core Team"
|
||||||
@@ -28,6 +28,7 @@
|
|||||||
"emotion": "9.2.12",
|
"emotion": "9.2.12",
|
||||||
"enzyme": "3.9.0",
|
"enzyme": "3.9.0",
|
||||||
"enzyme-adapter-react-16": "1.10.0",
|
"enzyme-adapter-react-16": "1.10.0",
|
||||||
|
"enzyme-to-json": "3.3.5",
|
||||||
"eslint": "5.14.1",
|
"eslint": "5.14.1",
|
||||||
"eslint-config-google": "0.12.0",
|
"eslint-config-google": "0.12.0",
|
||||||
"eslint-config-prettier": "4.1.0",
|
"eslint-config-prettier": "4.1.0",
|
||||||
|
|||||||
13
scripts/gh_publish.sh
Executable file
13
scripts/gh_publish.sh
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Get the last tag from GitHub
|
||||||
|
lastTag=$(git describe --tags $(git rev-list --tags --max-count=1))
|
||||||
|
|
||||||
|
# Print it to the console for verification
|
||||||
|
echo "Bumping version to new tag: ${lastTag}"
|
||||||
|
|
||||||
|
# creating .npmrc
|
||||||
|
echo "//$REGISTRY_URL/:_authToken=$REGISTRY_AUTH_TOKEN" > .npmrc
|
||||||
|
|
||||||
|
# Publish to NPM
|
||||||
|
npm publish --registry https://$REGISTRY_URL/
|
||||||
@@ -6,8 +6,5 @@ lastTag=$(git describe --tags $(git rev-list --tags --max-count=1))
|
|||||||
# Print it to the console for verification
|
# Print it to the console for verification
|
||||||
echo "Bumping version to new tag: ${lastTag}"
|
echo "Bumping version to new tag: ${lastTag}"
|
||||||
|
|
||||||
# creating .npmrc
|
|
||||||
echo "//$REGISTRY_URL/:_authToken=$REGISTRY_AUTH_TOKEN" > .npmrc
|
|
||||||
|
|
||||||
# Publish to NPM
|
# Publish to NPM
|
||||||
npm publish --registry https://$REGISTRY_URL/
|
npm publish
|
||||||
|
|||||||
@@ -8,11 +8,10 @@ import type { Node } from 'react';
|
|||||||
import Autosuggest from 'react-autosuggest';
|
import Autosuggest from 'react-autosuggest';
|
||||||
import match from 'autosuggest-highlight/match';
|
import match from 'autosuggest-highlight/match';
|
||||||
import parse from 'autosuggest-highlight/parse';
|
import parse from 'autosuggest-highlight/parse';
|
||||||
import Paper from '@material-ui/core/Paper';
|
|
||||||
import MenuItem from '@material-ui/core/MenuItem';
|
import MenuItem from '@material-ui/core/MenuItem';
|
||||||
|
|
||||||
import { fontWeight } from '../../utils/styles/sizes';
|
import { fontWeight } from '../../utils/styles/sizes';
|
||||||
import { Wrapper, InputField } from './styles';
|
import { Wrapper, InputField, SuggestionContainer } from './styles';
|
||||||
import { IProps } from './types';
|
import { IProps } from './types';
|
||||||
|
|
||||||
const renderInputComponent = (inputProps): Node => {
|
const renderInputComponent = (inputProps): Node => {
|
||||||
@@ -110,12 +109,12 @@ const AutoComplete = ({
|
|||||||
// this format avoid arrow function eslint rule
|
// this format avoid arrow function eslint rule
|
||||||
function renderSuggestionsContainer({ containerProps, children, query }) {
|
function renderSuggestionsContainer({ containerProps, children, query }) {
|
||||||
return (
|
return (
|
||||||
<Paper {...containerProps} square={true}>
|
<SuggestionContainer {...containerProps} square={true}>
|
||||||
{suggestionsLoaded && children === null && query && renderMessage(SUGGESTIONS_RESPONSE.NO_RESULT)}
|
{suggestionsLoaded && children === null && query && renderMessage(SUGGESTIONS_RESPONSE.NO_RESULT)}
|
||||||
{suggestionsLoading && query && renderMessage(SUGGESTIONS_RESPONSE.LOADING)}
|
{suggestionsLoading && query && renderMessage(SUGGESTIONS_RESPONSE.LOADING)}
|
||||||
{suggestionsError && renderMessage(SUGGESTIONS_RESPONSE.FAILURE)}
|
{suggestionsError && renderMessage(SUGGESTIONS_RESPONSE.FAILURE)}
|
||||||
{children}
|
{children}
|
||||||
</Paper>
|
</SuggestionContainer>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import styled, { css } from 'react-emotion';
|
import styled, { css } from 'react-emotion';
|
||||||
|
import Paper from '@material-ui/core/Paper';
|
||||||
|
|
||||||
import TextField from '../TextField';
|
import TextField from '../TextField';
|
||||||
import { IInputField } from './types';
|
import { IInputField } from './types';
|
||||||
@@ -50,3 +51,10 @@ export const InputField = ({ color, ...others }: IInputField) => (
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
export const SuggestionContainer = styled(Paper)`
|
||||||
|
&& {
|
||||||
|
max-height: 500px;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|||||||
@@ -3,7 +3,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { createBrowserHistory } from 'history';
|
import { createBrowserHistory } from 'history';
|
||||||
|
import { getBaseNamePath } from './utils/url';
|
||||||
|
|
||||||
const history = createBrowserHistory();
|
const history = createBrowserHistory({
|
||||||
|
basename: getBaseNamePath(),
|
||||||
|
});
|
||||||
|
|
||||||
export default history;
|
export default history;
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
<link rel="icon" type="image/png" href="<%= htmlWebpackPlugin.options.verdaccioURL %>/-/static/favicon.ico" />
|
<link rel="icon" type="image/png" href="<%= htmlWebpackPlugin.options.verdaccioURL %>/-/static/favicon.ico" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<script>
|
<script>
|
||||||
|
window.__VERDACCIO_BASENAME_UI_OPTIONS = JSON.parse('<%= htmlWebpackPlugin.options.__UI_OPTIONS %>');
|
||||||
|
window.VERDACCIO_BASENAME = '<%= htmlWebpackPlugin.options.basename %>';
|
||||||
window.VERDACCIO_API_URL = '<%= htmlWebpackPlugin.options.verdaccioURL %>/-/verdaccio/';
|
window.VERDACCIO_API_URL = '<%= htmlWebpackPlugin.options.verdaccioURL %>/-/verdaccio/';
|
||||||
window.VERDACCIO_SCOPE = '<%= htmlWebpackPlugin.options.scope %>';
|
window.VERDACCIO_SCOPE = '<%= htmlWebpackPlugin.options.scope %>';
|
||||||
window.VERDACCIO_LOGO = '<%= htmlWebpackPlugin.options.logo %>';
|
window.VERDACCIO_LOGO = '<%= htmlWebpackPlugin.options.logo %>';
|
||||||
|
|||||||
@@ -2,3 +2,11 @@ export function getRegistryURL() {
|
|||||||
// Don't add slash if it's not a sub directory
|
// Don't add slash if it's not a sub directory
|
||||||
return `${location.origin}${location.pathname === '/' ? '' : location.pathname}`;
|
return `${location.origin}${location.pathname === '/' ? '' : location.pathname}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getBaseNamePath() {
|
||||||
|
return window.__VERDACCIO_BASENAME_UI_OPTIONS.url_prefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getRootPath() {
|
||||||
|
return window.__VERDACCIO_BASENAME_UI_OPTIONS.base;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
import path from 'path';
|
|
||||||
|
|
||||||
export const parseConfigurationFile = (name) => {
|
|
||||||
return path.join(__dirname, `./partials/config/yaml/${name}.yaml`);
|
|
||||||
};
|
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { mount } from 'enzyme';
|
import { mount } from 'enzyme';
|
||||||
import storage from '../../../src/webui/utils/storage';
|
import storage from '../../src/webui/utils/storage';
|
||||||
import App from '../../../src/webui/app';
|
import App from '../../src/webui/app';
|
||||||
|
|
||||||
import { generateTokenWithTimeRange } from './components/__mocks__/token';
|
import { generateTokenWithTimeRange } from './components/__mocks__/token';
|
||||||
|
|
||||||
jest.mock('../../../src/webui/utils/storage', () => {
|
jest.mock('../../src/webui/utils/storage', () => {
|
||||||
class LocalStorageMock {
|
class LocalStorageMock {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.store = {};
|
this.store = {};
|
||||||
@@ -26,7 +26,7 @@ jest.mock('../../../src/webui/utils/storage', () => {
|
|||||||
return new LocalStorageMock();
|
return new LocalStorageMock();
|
||||||
});
|
});
|
||||||
|
|
||||||
jest.mock('../../../src/webui/utils/api', () => ({
|
jest.mock('../../src/webui/utils/api', () => ({
|
||||||
request: require('./components/__mocks__/api').default.request
|
request: require('./components/__mocks__/api').default.request
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ describe('App', () => {
|
|||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
wrapper = mount(<App />);
|
wrapper = mount(<App />);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('toggleLoginModal: should toggle the value in state', () => {
|
test('toggleLoginModal: should toggle the value in state', () => {
|
||||||
const { handleToggleLoginModal } = wrapper.instance();
|
const { handleToggleLoginModal } = wrapper.instance();
|
||||||
expect(wrapper.state().showLoginModal).toBeFalsy();
|
expect(wrapper.state().showLoginModal).toBeFalsy();
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
exports[`<NotFound /> component should load the component in default state 1`] = `ShallowWrapper {}`;
|
exports[`<NotFound /> component should load the component in default state 1`] = `<withRouter(WithTheme(WithWidth(NotFound))) />`;
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,3 +1,3 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
exports[`<Search /> component test should load the component in default state 1`] = `"<div class=\\"css-1crzyyo e18292mt0\\"><div role=\\"combobox\\" aria-haspopup=\\"listbox\\" aria-owns=\\"react-autowhatever-1\\" aria-expanded=\\"false\\" class=\\"react-autosuggest__container\\"><div class=\\"MuiFormControl-root-1 MuiFormControl-fullWidth-4 react-autosuggest__input\\" aria-autocomplete=\\"list\\" aria-controls=\\"react-autowhatever-1\\"><div class=\\"MuiInputBase-root-18 MuiInput-root-5 css-n9ojyg MuiInput-underline-9 MuiInputBase-fullWidth-27 MuiInput-fullWidth-12 MuiInputBase-formControl-19 MuiInput-formControl-6 MuiInputBase-adornedStart-22\\"><div class=\\"MuiInputAdornment-root-35 MuiInputAdornment-positionStart-37\\" style=\\"color: rgb(255, 255, 255);\\"><svg class=\\"MuiSvgIcon-root-40\\" focusable=\\"false\\" viewBox=\\"0 0 24 24\\" aria-hidden=\\"true\\" role=\\"presentation\\"><path d=\\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\\"></path><path fill=\\"none\\" d=\\"M0 0h24v24H0z\\"></path></svg></div><input aria-invalid=\\"false\\" autocomplete=\\"off\\" class=\\"MuiInputBase-input-28 MuiInput-input-13 css-hodoyq MuiInputBase-inputAdornedStart-33\\" placeholder=\\"Search Packages\\" type=\\"text\\" value=\\"\\"></div></div><div class=\\"MuiPaper-root-49 MuiPaper-elevation2-53 react-autosuggest__suggestions-container\\" id=\\"react-autowhatever-1\\" role=\\"listbox\\"></div></div></div>"`;
|
exports[`<Search /> component test should load the component in default state 1`] = `"<div class=\\"css-1crzyyo e18292mt0\\"><div role=\\"combobox\\" aria-haspopup=\\"listbox\\" aria-owns=\\"react-autowhatever-1\\" aria-expanded=\\"false\\" class=\\"react-autosuggest__container\\"><div class=\\"MuiFormControl-root-1 MuiFormControl-fullWidth-4 react-autosuggest__input\\" aria-autocomplete=\\"list\\" aria-controls=\\"react-autowhatever-1\\"><div class=\\"MuiInputBase-root-18 MuiInput-root-5 css-n9ojyg MuiInput-underline-9 MuiInputBase-fullWidth-27 MuiInput-fullWidth-12 MuiInputBase-formControl-19 MuiInput-formControl-6 MuiInputBase-adornedStart-22\\"><div class=\\"MuiInputAdornment-root-35 MuiInputAdornment-positionStart-37\\" style=\\"color: rgb(255, 255, 255);\\"><svg class=\\"MuiSvgIcon-root-40\\" focusable=\\"false\\" viewBox=\\"0 0 24 24\\" aria-hidden=\\"true\\" role=\\"presentation\\"><path d=\\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\\"></path><path fill=\\"none\\" d=\\"M0 0h24v24H0z\\"></path></svg></div><input aria-invalid=\\"false\\" autocomplete=\\"off\\" class=\\"MuiInputBase-input-28 MuiInput-input-13 css-hodoyq MuiInputBase-inputAdornedStart-33\\" placeholder=\\"Search Packages\\" type=\\"text\\" value=\\"\\"></div></div><div class=\\"MuiPaper-root-49 MuiPaper-elevation2-53 react-autosuggest__suggestions-container css-1aijpo3 e18292mt1\\" id=\\"react-autowhatever-1\\" role=\\"listbox\\"></div></div></div>"`;
|
||||||
@@ -6,8 +6,8 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { shallow } from 'enzyme';
|
import { shallow } from 'enzyme';
|
||||||
|
|
||||||
import CopyToClipBoard from '../../../../src/webui/components/CopyToClipBoard';
|
import CopyToClipBoard from '../../../src/webui/components/CopyToClipBoard/index';
|
||||||
import { CopyIcon } from '../../../../src/webui/components/CopyToClipBoard/styles';
|
import { CopyIcon } from '../../../src/webui/components/CopyToClipBoard/styles';
|
||||||
|
|
||||||
describe('<CopyToClipBoard /> component', () => {
|
describe('<CopyToClipBoard /> component', () => {
|
||||||
let wrapper;
|
let wrapper;
|
||||||
@@ -2,9 +2,9 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { mount } from 'enzyme';
|
import { mount } from 'enzyme';
|
||||||
|
|
||||||
import Footer from '../../../../src/webui/components/Footer/index';
|
import Footer from '../../../src/webui/components/Footer/index';
|
||||||
|
|
||||||
jest.mock('../../../../package.json', () => ({
|
jest.mock('../../../package.json', () => ({
|
||||||
version: '4.0.0-alpha.3'
|
version: '4.0.0-alpha.3'
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { BrowserRouter as Router } from 'react-router-dom';
|
import { BrowserRouter as Router } from 'react-router-dom';
|
||||||
import { shallow } from 'enzyme';
|
import { shallow } from 'enzyme';
|
||||||
import Header from '../../../../src/webui/components/Header';
|
import Header from '../../../src/webui/components/Header/index';
|
||||||
|
|
||||||
describe('<Header /> component with logged in state', () => {
|
describe('<Header /> component with logged in state', () => {
|
||||||
let wrapper;
|
let wrapper;
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
*/
|
*/
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { shallow } from 'enzyme';
|
import { shallow } from 'enzyme';
|
||||||
import Help from '../../../../src/webui/components/Help/index';
|
import Help from '../../../src/webui/components/Help/index';
|
||||||
|
|
||||||
describe('<Help /> component', () => {
|
describe('<Help /> component', () => {
|
||||||
|
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { mount } from 'enzyme';
|
import { mount } from 'enzyme';
|
||||||
|
|
||||||
import LoginModal from '../../../../src/webui/components/Login';
|
import LoginModal from '../../../src/webui/components/Login/index';
|
||||||
|
|
||||||
const eventUsername = {
|
const eventUsername = {
|
||||||
target: {
|
target: {
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { shallow, mount } from 'enzyme';
|
import { shallow, mount } from 'enzyme';
|
||||||
import NoItems from '../../../../src/webui/components/NoItems/index';
|
import NoItems from '../../../src/webui/components/NoItems/index';
|
||||||
|
|
||||||
console.error = jest.fn();
|
console.error = jest.fn();
|
||||||
|
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { BrowserRouter as Router } from 'react-router-dom';
|
import { BrowserRouter as Router } from 'react-router-dom';
|
||||||
import { shallow } from 'enzyme';
|
import { shallow } from 'enzyme';
|
||||||
import NotFound from '../../../../src/webui/components/NotFound/index';
|
import NotFound from '../../../src/webui/components/NotFound/index';
|
||||||
|
|
||||||
console.error = jest.fn();
|
console.error = jest.fn();
|
||||||
|
|
||||||
@@ -4,9 +4,9 @@
|
|||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { shallow } from 'enzyme';
|
import { shallow } from 'enzyme';
|
||||||
import Package from '../../../../src/webui/components/Package/index';
|
import Package from '../../../src/webui/components/Package/index';
|
||||||
import Tag from '../../../../src/webui/components/Tag/index';
|
import Tag from '../../../src/webui/components/Tag/index';
|
||||||
import { Version, WrapperLink, Field, OverviewItem } from '../../../../src/webui/components/Package/styles';
|
import { Version, WrapperLink, Field, OverviewItem } from '../../../src/webui/components/Package/styles';
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { mount } from 'enzyme';
|
import { mount } from 'enzyme';
|
||||||
import PackageList from '../../../../src/webui/components/PackageList/index';
|
import PackageList from '../../../src/webui/components/PackageList/index';
|
||||||
import Help from '../../../../src/webui/components/Help/index';
|
import Help from '../../../src/webui/components/Help/index';
|
||||||
import { BrowserRouter } from 'react-router-dom';
|
import { BrowserRouter } from 'react-router-dom';
|
||||||
|
|
||||||
describe('<PackageList /> component', () => {
|
describe('<PackageList /> component', () => {
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { shallow, mount } from 'enzyme';
|
import { shallow, mount } from 'enzyme';
|
||||||
import Readme from '../../../../src/webui/components/Readme/index';
|
import Readme from '../../../src/webui/components/Readme/index';
|
||||||
|
|
||||||
describe('<Readme /> component', () => {
|
describe('<Readme /> component', () => {
|
||||||
test('should load the component in default state', () => {
|
test('should load the component in default state', () => {
|
||||||
@@ -6,11 +6,11 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { mount } from 'enzyme';
|
import { mount } from 'enzyme';
|
||||||
|
|
||||||
import { Search } from '../../../../src/webui/components/Search/index';
|
import { Search } from '../../../src/webui/components/Search/index';
|
||||||
|
|
||||||
const SEARCH_FILE_PATH = '../../../../src/webui/components/Search/index';
|
const SEARCH_FILE_PATH = '../../../src/webui/components/Search/index';
|
||||||
const API_FILE_PATH = '../../../../src/webui/utils/api';
|
const API_FILE_PATH = '../../../src/webui/utils/api';
|
||||||
const URL_FILE_PATH = '../../../../src/webui/utils/url';
|
const URL_FILE_PATH = '../../../src/webui/utils/url';
|
||||||
|
|
||||||
// Global mocks
|
// Global mocks
|
||||||
const event = {
|
const event = {
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import {API_ERROR} from '../../../../../src/lib/constants';
|
import {API_ERROR} from '../../../../src/lib/constants';
|
||||||
/**
|
/**
|
||||||
* API mock for login endpoint
|
* API mock for login endpoint
|
||||||
* @param {object} config configuration of api call
|
* @param {object} config configuration of api call
|
||||||
@@ -10,6 +10,7 @@ import Adapter from 'enzyme-adapter-react-16';
|
|||||||
configure({ adapter: new Adapter() });
|
configure({ adapter: new Adapter() });
|
||||||
|
|
||||||
global.__APP_VERSION__ = '1.0.0';
|
global.__APP_VERSION__ = '1.0.0';
|
||||||
|
global.__VERDACCIO_BASENAME_UI_OPTIONS = {};
|
||||||
|
|
||||||
// mocking few DOM methods
|
// mocking few DOM methods
|
||||||
if (global.document) {
|
if (global.document) {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { isTokenExpire, makeLogin } from '../../../../src/webui/utils/login';
|
import { isTokenExpire, makeLogin } from '../../../src/webui/utils/login';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
generateTokenWithTimeRange,
|
generateTokenWithTimeRange,
|
||||||
@@ -5,7 +5,7 @@ import {
|
|||||||
formatDateDistance,
|
formatDateDistance,
|
||||||
getLastUpdatedPackageTime,
|
getLastUpdatedPackageTime,
|
||||||
getRecentReleases
|
getRecentReleases
|
||||||
} from '../../../../src/webui/utils/package';
|
} from '../../../src/webui/utils/package';
|
||||||
|
|
||||||
import { packageMeta } from '../components/store/packageMeta';
|
import { packageMeta } from '../components/store/packageMeta';
|
||||||
|
|
||||||
@@ -52,13 +52,21 @@ describe('formatDate', () => {
|
|||||||
|
|
||||||
describe('formatDateDistance', () => {
|
describe('formatDateDistance', () => {
|
||||||
test('should calculate the distance', () => {
|
test('should calculate the distance', () => {
|
||||||
|
const dateAboutTwoMonthsAgo = () => {
|
||||||
|
const date = new Date();
|
||||||
|
date.setMonth(date.getMonth() - 1);
|
||||||
|
date.setDate(date.getDay() - 20);
|
||||||
|
return date;
|
||||||
|
};
|
||||||
const dateTwoMonthsAgo = () => {
|
const dateTwoMonthsAgo = () => {
|
||||||
const date = new Date();
|
const date = new Date();
|
||||||
date.setMonth(date.getMonth() - 2);
|
date.setMonth(date.getMonth() - 2);
|
||||||
return date;
|
return date;
|
||||||
};
|
};
|
||||||
const date = dateTwoMonthsAgo();
|
const date1 = dateAboutTwoMonthsAgo();
|
||||||
expect(formatDateDistance(date)).toEqual('about 2 months');
|
const date2 = dateTwoMonthsAgo();
|
||||||
|
expect(formatDateDistance(date1)).toEqual('about 2 months');
|
||||||
|
expect(formatDateDistance(date2)).toEqual('2 months');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -7,6 +7,7 @@ module.exports = {
|
|||||||
output: {
|
output: {
|
||||||
path: `${env.APP_ROOT}/static/`,
|
path: `${env.APP_ROOT}/static/`,
|
||||||
filename: '[name].[hash].js',
|
filename: '[name].[hash].js',
|
||||||
|
// FIXME: do we need this?
|
||||||
publicPath: 'ToReplaceByVerdaccio/-/static',
|
publicPath: 'ToReplaceByVerdaccio/-/static',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ export default {
|
|||||||
__APP_VERSION__: `"${getPackageJson('version')}"`,
|
__APP_VERSION__: `"${getPackageJson('version')}"`,
|
||||||
}),
|
}),
|
||||||
new HTMLWebpackPlugin({
|
new HTMLWebpackPlugin({
|
||||||
|
__UI_OPTIONS: JSON.stringify({base: '/'}),
|
||||||
title: 'Verdaccio Dev UI',
|
title: 'Verdaccio Dev UI',
|
||||||
scope: '',
|
scope: '',
|
||||||
logo: 'https://verdaccio.org/img/logo/symbol/svg/verdaccio-tiny.svg',
|
logo: 'https://verdaccio.org/img/logo/symbol/svg/verdaccio-tiny.svg',
|
||||||
|
|||||||
@@ -45,7 +45,9 @@ const prodConf = {
|
|||||||
}),
|
}),
|
||||||
new HTMLWebpackPlugin({
|
new HTMLWebpackPlugin({
|
||||||
title: 'ToReplaceByTitle',
|
title: 'ToReplaceByTitle',
|
||||||
|
__UI_OPTIONS: 'ToReplaceByVerdaccioUI',
|
||||||
scope: 'ToReplaceByScope',
|
scope: 'ToReplaceByScope',
|
||||||
|
basename: 'ToReplaceByPrefix',
|
||||||
logo: 'ToReplaceByLogo',
|
logo: 'ToReplaceByLogo',
|
||||||
primary_color: 'ToReplaceByPrimaryColor',
|
primary_color: 'ToReplaceByPrimaryColor',
|
||||||
filename: 'index.html',
|
filename: 'index.html',
|
||||||
|
|||||||
@@ -4771,6 +4771,13 @@ enzyme-adapter-utils@^1.10.0:
|
|||||||
prop-types "^15.7.2"
|
prop-types "^15.7.2"
|
||||||
semver "^5.6.0"
|
semver "^5.6.0"
|
||||||
|
|
||||||
|
enzyme-to-json@3.3.5:
|
||||||
|
version "3.3.5"
|
||||||
|
resolved "https://registry.verdaccio.org/enzyme-to-json/-/enzyme-to-json-3.3.5.tgz#f8eb82bd3d5941c9d8bc6fd9140030777d17d0af"
|
||||||
|
integrity sha512-DmH1wJ68HyPqKSYXdQqB33ZotwfUhwQZW3IGXaNXgR69Iodaoj8TF/D9RjLdz4pEhGq2Tx2zwNUIjBuqoZeTgA==
|
||||||
|
dependencies:
|
||||||
|
lodash "^4.17.4"
|
||||||
|
|
||||||
enzyme@3.9.0:
|
enzyme@3.9.0:
|
||||||
version "3.9.0"
|
version "3.9.0"
|
||||||
resolved "https://registry.npmjs.org/enzyme/-/enzyme-3.9.0.tgz#2b491f06ca966eb56b6510068c7894a7e0be3909"
|
resolved "https://registry.npmjs.org/enzyme/-/enzyme-3.9.0.tgz#2b491f06ca966eb56b6510068c7894a7e0be3909"
|
||||||
|
|||||||
Reference in New Issue
Block a user