Skip to content

Commit b7879d2

Browse files
authored
Merge pull request #10 from Patternslib/add-dist
feat: Add the compiled bundle to npm.
2 parents bd88c25 + 6a06dd0 commit b7879d2

File tree

4 files changed

+102
-36
lines changed

4 files changed

+102
-36
lines changed

.npmignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
.DS_Store
2+
.env
3+
node_modules/
4+
stamp-yarn
5+
stats.json
6+
yarn-error.log
7+
*.zip

Makefile

Lines changed: 93 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,22 @@
1+
# This Makefile is meant to be exported by Patternslib or Mockup packages.
2+
3+
# .evn include, mainly for a GITHUB_TOKEN.
14
-include .env
25
export
36

7+
8+
# If you want to release on GitHub, make sure to have a .env file with a GITHUB_TOKEN.
9+
# Also see:
10+
# https://github.com/settings/tokens
11+
# and https://github.com/release-it/release-it/blob/master/docs/github-releases.md#automated
12+
13+
414
ESLINT ?= npx eslint
515
YARN ?= npx yarn
616

717
PACKAGE_DEV=@patternslib/dev
818
PACKAGE_NAME := $(shell node -p "require('./package.json').name")
19+
BUNDLE_NAME := $(subst @patternslib/,,$(subst @plone/,,$(PACKAGE_NAME)))
920

1021
.PHONY: install
1122
stamp-yarn install:
@@ -43,6 +54,7 @@ bundle-pre:
4354
@# yarn install --force
4455

4556

57+
# Compile the bundle.
4658
.PHONY: bundle
4759
bundle: bundle-pre stamp-yarn
4860
ifneq "$(PACKAGE_NAME)" "$(PACKAGE_DEV)"
@@ -51,58 +63,104 @@ ifneq "$(PACKAGE_NAME)" "$(PACKAGE_DEV)"
5163
endif
5264

5365

54-
# If you want to release on GitHub, make sure to have a .env file with a GITHUB_TOKEN.
55-
# Also see:
56-
# https://github.com/settings/tokens
57-
# and https://github.com/release-it/release-it/blob/master/docs/github-releases.md#automated
58-
59-
66+
# Create a ZIP file from the bundle which is uploaded to the GitHub release tag.
6067
release-zip: clean-dist bundle
6168
ifneq "$(PACKAGE_NAME)" "$(PACKAGE_DEV)"
6269
@# Do not create a zip release for @patternslib/dev
63-
$(eval BUNDLE_NAME := $(subst @patternslib/,,$(subst @plone/,,$(PACKAGE_NAME))))
6470
$(eval PACKAGE_VERSION := $(shell node -p "require('./package.json').version"))
6571
@echo Creating $(BUNDLE_NAME)-bundle-$(PACKAGE_VERSION).zip
66-
mkdir -p dist/$(BUNDLE_NAME)-bundle-$(PACKAGE_VERSION)
67-
-mv dist/* dist/$(BUNDLE_NAME)-bundle-$(PACKAGE_VERSION)
68-
cd dist/ && zip -r $(BUNDLE_NAME)-bundle-$(PACKAGE_VERSION).zip $(BUNDLE_NAME)-bundle-$(PACKAGE_VERSION)/
72+
mkdir -p $(BUNDLE_NAME)-bundle-$(PACKAGE_VERSION)
73+
-cp -R dist/* $(BUNDLE_NAME)-bundle-$(PACKAGE_VERSION)
74+
zip -r $(BUNDLE_NAME)-bundle-$(PACKAGE_VERSION).zip $(BUNDLE_NAME)-bundle-$(PACKAGE_VERSION)/
75+
rm -Rf $(BUNDLE_NAME)-bundle-$(PACKAGE_VERSION)
6976
endif
7077

7178

79+
# Update the package.json version with NEXT_VERSION
80+
define write_package_json
81+
const fs = require("fs"); \
82+
const package_json = require("./package.json"); \
83+
package_json.version = "$(NEXT_VERSION)"; \
84+
const data = JSON.stringify(package_json, null, 4); \
85+
fs.writeFileSync("package.json", data);
86+
endef
87+
88+
prepare-release:
89+
@# Get the current package version.
90+
$(eval CURRENT_VERSION := $(shell node -p "require('./package.json').version"))
91+
ifeq ($(LEVEL),$(filter $(LEVEL), alpha beta))
92+
@# case alpha or beta pre-release
93+
94+
@# Set level argument for release-it.
95+
$(eval RELEASE_IT_LEVEL := "--preRelease=$(LEVEL)")
96+
@# Get the next version via semver.
97+
$(eval NEXT_VERSION := $(shell npx semver --increment premajor --preid $(LEVEL) $(CURRENT_VERSION)))
98+
else
99+
@# case normal major/minor/patch release
100+
101+
@# Set level argument for release-it.
102+
$(eval RELEASE_IT_LEVEL := $(LEVEL))
103+
@# Get the next version via semver.
104+
$(eval NEXT_VERSION := $(shell npx semver --increment $(LEVEL) $(CURRENT_VERSION)))
105+
endif
106+
@echo Next version is: $(NEXT_VERSION)
107+
108+
@# Temporarily write the NEXT_VERSION to package.json, so that the bundle
109+
@# and release-zip generate correct version strings.
110+
node -p '$(write_package_json)'
111+
112+
113+
release: clean install check prepare-release release-zip
114+
@# RELEASE_IT_LEVEL and NEXT_VERSION set by prepare-release
115+
116+
@# Note: If you want to include the compiled bundle in your npm package you
117+
@# have to allow it in a .npmignore file.
118+
119+
@# Checkout package.json which was modified by prepare-release and read by
120+
@# release-zip.
121+
git checkout .
122+
123+
@# 1) Release on npm.
124+
@# 2) When successful, update release on GitHub
125+
@# 3) Checkout CHANGES.md, which was modified by step 2)
126+
npx release-it $(RELEASE_IT_LEVEL) \
127+
&& npx release-it \
128+
--github.release \
129+
--github.update \
130+
--github.assets=$(BUNDLE_NAME)-bundle-$(NEXT_VERSION).zip \
131+
--no-github.draft \
132+
--no-increment \
133+
--no-git \
134+
--no-npm
135+
&& git checkout CHANGES.md
136+
137+
@# Remove the bundle from release-zip again.
138+
rm $(BUNDLE_NAME)-bundle-$(PACKAGE_VERSION).zip
139+
140+
72141
.PHONY: release-major
73-
release-major: check
74-
npx release-it major && \
75-
make release-zip && \
76-
npx release-it --github.release --github.update --github.assets=dist/*.zip --no-github.draft --no-increment --no-git --no-npm && \
77-
git checkout CHANGES.md
142+
release-major:
143+
make LEVEL=major release
144+
78145

79146
.PHONY: release-minor
80-
release-minor: check
81-
npx release-it minor && \
82-
make release-zip && \
83-
npx release-it --github.release --github.update --github.assets=dist/*.zip --no-github.draft --no-increment --no-git --no-npm && \
84-
git checkout CHANGES.md
147+
release-minor:
148+
make LEVEL=minor release
149+
85150

86151
.PHONY: release-patch
87-
release-patch: check
88-
npx release-it patch && \
89-
make release-zip && \
90-
npx release-it --github.release --github.update --github.assets=dist/*.zip --no-github.draft --no-increment --no-git --no-npm && \
91-
git checkout CHANGES.md
152+
release-patch:
153+
make LEVEL=patch release
154+
92155

93156
.PHONY: prerelease-alpha
94-
prerelease-alpha: clean install
95-
npx release-it --preRelease=alpha && \
96-
make release-zip && \
97-
npx release-it --github.release --github.update --github.assets=dist/*.zip --no-github.draft --no-increment --no-git --no-npm && \
98-
git checkout CHANGES.md
157+
prerelease-alpha:
158+
make LEVEL=alpha release
159+
99160

100161
.PHONY: prerelease-beta
101-
prerelease-beta: clean install
102-
npx release-it --preRelease=beta && \
103-
make release-zip && \
104-
npx release-it --github.release --github.update --github.assets=dist/*.zip --no-github.draft --no-increment --no-git --no-npm && \
105-
git checkout CHANGES.md
162+
prerelease-beta:
163+
make LEVEL=beta release
106164

107165

108166
.PHONY: serve

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
"release-it": "^15.5.0",
2626
"sass": "^1.55.0",
2727
"sass-loader": "^13.1.0",
28+
"semver": "^7.3.8",
2829
"style-loader": "^3.3.0",
2930
"terser-webpack-plugin": "^5.3.6",
3031
"timezone-mock": "^1.3.4",

yarn.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8421,7 +8421,7 @@ [email protected], semver@^7.3.7:
84218421
dependencies:
84228422
lru-cache "^6.0.0"
84238423

8424-
8424+
[email protected], semver@^7.3.8:
84258425
version "7.3.8"
84268426
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
84278427
integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==

0 commit comments

Comments
 (0)