Open lihaoyi opened 5 days ago
Hi @lihaoyi
As a first-time contributor, I will be going over CONTRIBUTING.adoc.
Meanwhile, I have a question.
For the first task, example/jslib/basic/
, I take it example/jslib/basic/
is relative to https://github.com/com-lihaoyi/mill/tree/main/example , and this is where the PR will be opened against, correct?
Hi @lihaoyi , I'll like to work on the linting and testing parts of this bounty
@ayewo so there are two main components to the first task:
example/
folder. You will need to tweak the package.mill
file accordinglyjslib/
top-level folder, next to the existing javalib/
kotlinlib/
and scalalib/
folders.There is existing demo code in https://github.com/com-lihaoyi/mill/blob/main/example/extending/typescript/4-npm-deps-bundle/build.mill that can form the basis of the library code in jslib/
, but I expect it will need to be fleshed out (e.g. to include support for at least one JS test-runner)
Hi @lihaoyi, I have a solid background in JavaScript and TypeScript and would like to work on this PR. Could you please guide me on how to get started with it?
From the maintainer Li Haoyi: I'm putting a 4500USD bounty on this issue, payable by bank transfer on merged PRs implementing this. Standard bounty terms apply
Mill is a multi-language build tool that provides automatic caching and parallelism of build tasks related to local development (see What Makes Mill Unique?). Traditionally it targeted JVM languages, but we think that JS/TS projects could benefit from automatic caching and parallelism as well, especially the larger multi-language codebases with both JVM and JS/TS modules that would benefit from having a single build tool able to build code in both languages incrementally and in parallel.
The goal of this ticket is to generate a set of Typescript build examples that match the Java/Scala/Kotlin equivalents. We already have an example TypescriptModule for demo purposes, but we would need to flesh it out using the equivalent Typescript tools and libraries.
For the purposes of this ticket, each examples should match as closely as possible the Java/Scala/Kotlin equivalents, to provide a useful minimal-but-still-educational code example, along with associated english documentation and explanations. You should read through the relevant sections of the Building Java with Mill documentation before proceeding, even if you don't know Java, just to get a feel for what the documentation and examples for each section should cover.
[ ]
example/jslib/basic/
(500USD)1-simple/
: A minimal Typescript module demonstrating typechecking/running/testing/bundling of a Node CLI tool2-react/
: A minimal Typescript module demonstrating typechecking/running/testing/bundling of a React-based web application, served using a static HTML page3-custom-build-logic/
: A Typescript module with custom build logic[ ]
example/jslib/basic/
: (500USD)4-multi-modules/
: Multiple inter-related Typescript modules5-client-server-hello/
: Demonstrate a client-server application with two modules, one a minimal JS server and one a minimal JS client, wired up and interacting6-client-server-realistic/
: Demonstrate a client-server application with two modules, one an Express server and one an React.js client, wired up and interacting, implementing a TodoMVC application[ ]
example/jslib/dependencies/
(500USD)1-npm-deps/
2-unmanaged-packages/
3-downloading-unmanaged-packages/
4-repository-config/
: examples of how to use alternate NPM mirrors or repositories[ ]
example/jslib/linting/
(1000USD)1-autoformatting/
: equivalent to1-scalafmt
but using some Typescript autoformatter2-code-coverage/
: not sure what the popular Typescript code coverage lib is, but they should have something3-linting/
: using some popular Typescript linter[ ]
example/jslib/module/
(500USD)1-common-config/
2-custom-tasks/
3-override-tasks/
4-compilation-execution-flags/
5-resources/
6-executable-config/
[ ]
example/jslib/testing/
(500USD)1-test-suite/
: we should demonstrate usage of at least 2 Javascript testing frameworksmocha
andjest
2-test-deps/
[ ]
example/jslib/testing/
(500USD)3-integration-suite/
: we should demonstrate usage of at least 2 Javascript integration testing frameworkscypress
andplaywright
[ ]
example/jslib/publishing/1-publish-module/
,example/jslib/basic/2-realistic/
(500USD)publishing/1-publish-module/
should demonstrate how to publish a Typescript module to NPM