Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Overhaul Javascript related Domains #39

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@

- Add `plone-site` template configuration to `mx.ini` template.

**Breaking changes**

- Rename `npm` domain to `nodejs` and add support for using `pnpm` as
alternative package manager.

## 1.0a5 (2024-06-07)

- Export `OS` environment variable in `mxenv` domain to prevent warning on
Expand Down
5 changes: 4 additions & 1 deletion src/mxmake/templates.py
Original file line number Diff line number Diff line change
Expand Up @@ -340,19 +340,22 @@ def __init__(
@property
def template_variables(self) -> typing.Dict[str, typing.Any]:
mxmake_templates = []
mxmake_env = False
for domain in self.domains:
if domain.fqn == "qa.test":
mxmake_env = True
template = dict(name="run-tests", settings=dict(environment="env"))
mxmake_templates.append(template)
if domain.fqn == "qa.coverage":
mxmake_env = True
template = dict(name="run-coverage", settings=dict(environment="env"))
mxmake_templates.append(template)
if domain.fqn == "applications.plone":
template = dict(
name="plone-site", settings=dict(distribution="default")
)
mxmake_templates.append(template)
return dict(mxmake_templates=mxmake_templates)
return dict(mxmake_templates=mxmake_templates, mxmake_env=mxmake_env)


##############################################################################
Expand Down
7 changes: 4 additions & 3 deletions src/mxmake/templates/mx.ini
Original file line number Diff line number Diff line change
@@ -1,25 +1,26 @@
[settings]
threads = 5
version-overrides =

{% if mxmake_templates -%}

# mxmake related mxdev extensions

# templates to generate
mxmake-templates =
{% for template in mxmake_templates %}
{{ template["name"] }}
{% endfor %}
{% if mxmake_env %}

# environment variables
[mxmake-env]
# VAR = value

{% endif %}
{% for template in mxmake_templates %}

[mxmake-{{ template["name"] }}]
{% for key, value in template["settings"].items() %}
{{ key }} = {{ value }}
{% endfor %}

{% endfor %}
{%- endif %}
7 changes: 2 additions & 5 deletions src/mxmake/topics/docs/jsdoc.mk
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
#:[jsdoc]
#:title = JSDoc Documentation
#:description = JSDoc installation and integration into Sphinx.
#:depends = js.npm
#:depends = js.nodejs

##############################################################################
# jsdoc
##############################################################################

# extend npm dev packages
NPM_DEV_PACKAGES+=jsdoc

# extend sphinx requirements and docs targets
NODEJS_DEV_PACKAGES+=jsdoc
DOCS_REQUIREMENTS+=sphinx_js
7 changes: 3 additions & 4 deletions src/mxmake/topics/js/karma.mk
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#:[karma]
#:title = Karma tests
#:description = Run JavaScript tests using karma.
#:depends = js.npm
#:depends = js.nodejs
#:
#:[target.karma]
#:description = Run karma.
Expand All @@ -18,13 +18,12 @@
# karma
##############################################################################

# extend npm dev packages
NPM_DEV_PACKAGES+=\
NODEJS_DEV_PACKAGES+=\
karma \
karma-coverage \
karma-chrome-launcher \
karma-module-resolver-preprocessor

.PHONY: karma
karma: $(NPM_TARGET)
karma: $(NODEJS_TARGET)
@karma start $(KARMA_CONFIG) $(KARMA_OPTIONS)
96 changes: 96 additions & 0 deletions src/mxmake/topics/js/nodejs.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
#:[nodejs]
#:title = Node.js
#:description = Provide targets for working with Node.js. A working version of
#: Node.js is expected to be installed. We suggest using `nvm` for managing
#: Node.JS installations.
#:depends = core.base
#:
#:[target.nodejs]
#:description = Installs Javascript packages using the current active node
#: version with the configured package manager.
#:
#:[target.nodejs-dirty]
#:description = Build :ref:`nodejs` target on next make run.
#:
#:[target.nodejs-clean]
#:description = Remove installed Javascript packages.
#:
#:[setting.NODEJS_PACKAGE_MANAGER]
#:description = The package manager to use. Defaults to `npm`. Possible values
#: are `npm` and `pnpm`
#:default = npm
#:
#:[setting.NODEJS_PREFIX]
#:description = Value for `--prefix` option when installing packages.
#:default = .
#:
#:[setting.NODEJS_PACKAGES]
#:description = Packages to install with `--no-save` option.
#:default =
#:
#:[setting.NODEJS_DEV_PACKAGES]
#:description = Packages to install with `--save-dev` option.
#:default =
#:
#:[setting.NODEJS_PROD_PACKAGES]
#:description = Packages to install with `--save-prod` option.
#:default =
#:
#:[setting.NODEJS_OPT_PACKAGES]
#:description = Packages to install with `--save-optional` option.
#:default =
#:
#:[setting.NODEJS_INSTALL_OPTS]
#:description = Additional install options. Possible values are `--save-exact`
#: and `--save-bundle`.
#:default =

##############################################################################
# nodejs
##############################################################################

export PATH:=$(shell pwd)/$(NODEJS_PREFIX)/node_modules/.bin:$(PATH)


NODEJS_TARGET:=$(SENTINEL_FOLDER)/nodejs.sentinel
$(NODEJS_TARGET): $(SENTINEL)
@echo "Install nodejs packages"
@test -z "$(NODEJS_DEV_PACKAGES)" \
&& echo "No dev packages to be installed" \
|| $(NODEJS_PACKAGE_MANAGER) --prefix $(NODEJS_PREFIX) install \
--save-dev \
$(NODEJS_INSTALL_OPTS) \
$(NODEJS_DEV_PACKAGES)
@test -z "$(NODEJS_PROD_PACKAGES)" \
&& echo "No prod packages to be installed" \
|| $(NODEJS_PACKAGE_MANAGER) --prefix $(NODEJS_PREFIX) install \
--save-prod \
$(NODEJS_INSTALL_OPTS) \
$(NODEJS_PROD_PACKAGES)
@test -z "$(NODEJS_OPT_PACKAGES)" \
&& echo "No opt packages to be installed" \
|| $(NODEJS_PACKAGE_MANAGER) --prefix $(NODEJS_PREFIX) install \
--save-optional \
$(NODEJS_INSTALL_OPTS) \
$(NODEJS_OPT_PACKAGES)
@test -z "$(NODEJS_PACKAGES)" \
&& echo "No packages to be installed" \
|| $(NODEJS_PACKAGE_MANAGER) --prefix $(NODEJS_PREFIX) install \
--no-save \
$(NODEJS_PACKAGES)
@touch $(NODEJS_TARGET)

.PHONY: nodejs
nodejs: $(NODEJS_TARGET)

.PHONY: nodejs-dirty
nodejs-dirty:
@rm -f $(NODEJS_TARGET)

.PHONY: nodejs-clean
nodejs-clean: nodejs-dirty
@rm -rf $(NODEJS_PREFIX)/node_modules

INSTALL_TARGETS+=nodejs
DIRTY_TARGETS+=nodejs-dirty
CLEAN_TARGETS+=nodejs-clean
90 changes: 0 additions & 90 deletions src/mxmake/topics/js/npm.mk

This file was deleted.

7 changes: 3 additions & 4 deletions src/mxmake/topics/js/rollup.mk
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#:[rollup]
#:title = Rollup JavaScript module bundler
#:description = Create JavaScript bundles with rollup.
#:depends = js.npm
#:depends = js.nodejs
#:
#:[target.rollup]
#:description = Run rollup JavaScript bundler.
Expand All @@ -14,12 +14,11 @@
# rollup
##############################################################################

# extend npm dev packages
NPM_DEV_PACKAGES+=\
NODEJS_DEV_PACKAGES+=\
rollup \
rollup-plugin-cleanup \
@rollup/plugin-terser

.PHONY: rollup
rollup: $(NPM_TARGET)
rollup: $(NODEJS_TARGET)
@rollup --config $(ROLLUP_CONFIG)
7 changes: 3 additions & 4 deletions src/mxmake/topics/js/scss.mk
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#:[scss]
#:title = SCSS Compiler
#:description = Compile Stylesheets using SCSS.
#:depends = js.npm
#:depends = js.nodejs
#:
#:[target.scss]
#:description = Run SCSS Stylesheet Compiler.
Expand All @@ -26,10 +26,9 @@
# scss
##############################################################################

# extend npm dev packages
NPM_DEV_PACKAGES+=sass
NODEJS_DEV_PACKAGES+=sass

.PHONY: scss
scss: $(NPM_TARGET)
scss: $(NODEJS_TARGET)
@sass $(SCSS_OPTIONS) $(SCSS_SOURCE) $(SCSS_TARGET)
@sass $(SCSS_OPTIONS) --style compressed $(SCSS_SOURCE) $(SCSS_MIN_TARGET)
7 changes: 3 additions & 4 deletions src/mxmake/topics/js/wtr.mk
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#:[wtr]
#:title = Web test runner
#:description = Run JavaScript tests using web test runner.
#:depends = js.npm
#:depends = js.nodejs
#:
#:[target.wtr]
#:description = Execute web test runner.
Expand All @@ -18,11 +18,10 @@
# web test runner
##############################################################################

# extend npm dev packages
NPM_DEV_PACKAGES+=\
NODEJS_DEV_PACKAGES+=\
@web/test-runner \
@web/dev-server-import-maps

.PHONY: wtr
wtr: $(NPM_TARGET)
wtr: $(NODEJS_TARGET)
@web-test-runner $(WTR_OPTIONS) --config $(WTR_CONFIG)
1 change: 0 additions & 1 deletion src/mxmake/topics/system/dependencies.mk
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
#:title = System dependencies
#:description = System dependency management.
#:depends = core.base
#:soft-depends = js.npm
#:
#:[target.system-dependencies]
#:description = Install system dependencies.
Expand Down
Loading