-
Notifications
You must be signed in to change notification settings - Fork 1.2k
JavaScript NPM Course
NPM Course Overview
Below you can find the ordered content of the topic, in a linear progression
The linear progression of content aims to cover all content, course by course, workout by workout as follows:
- first course is the only core one, denoted by its manifest
- the next course is denoted by the first item of the next array in each course manifest
- each course has its order of workouts designated by the sections field in the same aforementioned manifest
1. intro-npm
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | what-is-npm | ✅ | 👶 introduction 💪 workout |
npm-tasks-and-modules-manager.0: 10 | ✅ | ✅ | ❌ | ✅ |
2 | why-use-npm | ✅ | 👶 introduction | npm-tasks-and-modules-manager.0: 20 | ✅ | ✅ | ❌ | ✅ |
3 | setting-up-npm | ✅ | 👶 introduction | npm-tasks-and-modules-manager.0: 10 node-developer-environment.2: 10 |
✅ | ✅ | ❌ | ✅ |
4 | package-json | ✅ | 👶 introduction | npm-tasks-and-modules-manager.0: 10 | ✅ | ✅ | ❌ | ✅ |
5 | semantic-versioning | ✅ | 👶 introduction 💪 workout 🦑 deep |
npm-publish.3: 10 use-open-source-javascript-packages.1: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
2. features-i
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | npm-scripting | ✅ | 👶 introduction 💪 workout 🦑 deep |
npm-tasks-and-modules-manager.0: 30 npm-tasks-and-modules-manager.3: 30 |
✅ | ✅ | ❌ | ✅ |
2 | available-binaries-for-scripting | ✅ | 👶 introduction 💪 workout 🦑 deep |
npm-publish.0: 10 npm-tasks-and-modules-manager.0: 10 |
✅ | ✅ | ❌ | ✅ |
3 | npm-variables | ✅ | 👶 introduction 💪 workout 🦑 deep |
npm-tasks-and-modules-manager.0: 10 npm-tasks-and-modules-manager.1: 10 |
✅ | ✅ | ❌ | ✅ |
4 | scripts-lifecycle | ✅ | 👶 introduction 💪 workout 🦑 deep |
npm-tasks-and-modules-manager.3: 10 | ✅ | ✅ | ❌ | ✅ |
5 | remote-scripts | ✅ | 👶 introduction 💪 workout 🦑 deep |
npm-tasks-and-modules-manager.1: 10 npm-tasks-and-modules-manager.3: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | packages-vs-modules | ✅ | 👶 introduction 💪 workout 🦑 deep |
npm-publish.3: 10 | ✅ | ✅ | ❌ | ✅ |
2 | private-packages | ✅ | 💪 workout 🦑 deep ✨ new |
npm-publish.1: 10 npm-tasks-and-modules-manager.0: 10 |
✅ | ✅ | ❌ | ✅ |
3 | dependencies | ✅ | 👶 introduction 💪 workout 🦑 deep |
use-open-source-javascript-packages.5: 10 npm-tasks-and-modules-manager.0: 10 |
✅ | ✅ | ❌ | ✅ |
4 | deprecated-peer-dependencies | ✅ | 💪 workout 🦑 deep ✨ new |
use-open-source-javascript-packages.1: 10 npm-publish.0: 10 npm-tasks-and-modules-manager.0: 10 |
✅ | ✅ | ❌ | ✅ |
5 | how-npm3-handles-dependencies | ✅ | 💪 workout 🦑 deep ✨ new |
use-open-source-javascript-packages.1: 10 npm-publish.0: 10 npm-tasks-and-modules-manager.0: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
4. features-ii
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | optionaldependencies-in-npm | ✅ | 💪 workout 🦑 deep |
use-open-source-javascript-packages.0: 10 npm-publish.0: 10 |
✅ | ✅ | ❌ | ✅ |
2 | environmental-variables-and-flags-for-npm | ✅ | 💪 workout 🦑 deep |
npm-tasks-and-modules-manager.1: 10 npm-tasks-and-modules-manager.3: 10 |
✅ | ✅ | ❌ | ✅ |
3 | passing-through-command-line-arguments-in-npm-scripts | ✅ | 👶 introduction 💪 workout 🦑 deep |
❌ | ✅ | ✅ | ❌ | ❌ |
4 | abbreviate-commands-in-npm | ✅ | 🔮 obscura | npm-tasks-and-modules-manager.3: 10 | ✅ | ✅ | ❌ | ✅ |
5 | npm-verifies-sha1-hashes-of-packages | ✅ | 💪 workout 🦑 deep |
use-open-source-javascript-packages.2: 10 npm-publish.0: 10 npm-publish.2: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
5. publishing
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | creating-a-node-module | ✅ | 💪 workout 🦑 deep ✨ new |
npm-publish.0: 10 npm-tasks-and-modules-manager.0: 10 |
✅ | ✅ | ❌ | ✅ |
2 | prepare-your-module-for-publishing | ✅ | 👶 introduction 💪 workout 🦑 deep |
npm-publish.6: 10 npm-publish.0: 10 |
✅ | ✅ | ❌ | ✅ |
3 | tests | ✅ | 👶 introduction 💪 workout |
npm-publish.7: 10 npm-publish.8: 10 npm-tasks-and-modules-manager.1: 10 |
✅ | ✅ | ❌ | ✅ |
4 | how-to-publish-your-own-packages | ✅ | 👶 introduction 💪 workout |
npm-publish.0: 10 | ✅ | ✅ | ❌ | ✅ |
5 | check-data-about-a-package | ✅ | 👶 introduction 💪 workout 🦑 deep |
use-open-source-javascript-packages.3: 10 npm-tasks-and-modules-manager.0: 10 |
✅ | ✅ | ❌ | ✅ |
6 | package-distribution-tags | ✅ | 💪 workout | use-open-source-javascript-packages.9: 10 npm-publish.0: 10 npm-tasks-and-modules-manager.0: 10 |
✅ | ✅ | ❌ | ✅ |
7 | registry-user-accounts-for-npm | ✅ | 💪 workout 🦑 deep |
npm-publish.0: 10 npm-publish.1: 10 npm-publish.9: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
6. tools-i
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | manage-local-node-modules-with-npm-link | ✅ | 💪 workout 👶 introduction |
npm-tasks-and-modules-manager.0: 10 | ✅ | ✅ | ❌ | ✅ |
2 | manipulate-npm-packages-cache | ✅ | 💪 workout 🦑 deep ✨ new |
npm-tasks-and-modules-manager.0: 10 | ✅ | ✅ | ❌ | ✅ |
3 | lock-down-dependency-versions-by-shrinkwrapping | ✅ | 💪 workout 🦑 deep ✨ new |
use-open-source-javascript-packages.1: 10 npm-publish.2: 10 npm-tasks-and-modules-manager.0: 10 |
✅ | ✅ | ❌ | ✅ |
4 | bump-package-version-in-npm | ✅ | 💪 workout 👶 introduction |
npm-publish.3: 10 | ✅ | ✅ | ❌ | ✅ |
5 | deprecate-npm-packages | ✅ | 💪 workout 🦑 deep 👶 introduction |
use-open-source-javascript-packages.1: 10 npm-publish.2: 10 npm-publish.3: 10 npm-tasks-and-modules-manager.0: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
✅ - At least one insight covers this
❌ - Nothing covers this
🛠️ - This standard has no objectives yet
- ✅ Search the NPM repository for open-source code to solve a problem
- ✅ Distinguish between badly and well maintained packages as a benefit or cost factor
- ✅ Assess security vulnerabilities in an open-source JavaScript package as a benefit or cost factor
- ✅ Distinguish the effectiveness of documentation in an open-source JavaScript package as a benefit or cost factor
- ❌ Distinguish the test coverage of a package as a benefit or cost factor
- ✅ Distinguish a package for performance optimization as a benefit or cost factor
- ❌ Evaluate a package for it's ability to improve expressiveness as a benefit factor
- ❌ Evaluate a package's install size as a cost factor
- ❌ Evaluate the licensing of a package as a cost factor
- ✅ Evaluate the opinion of the community as a benefit factor
- ❌ Evaluate the opinion of the community as a cost factor
- ❌ Effectively weigh benefit and cost factors to choose open source packages
- ❌ Create a dependency maintenance task to monitor package updates
- ✅ Use package.json to manage dependencies
- ✅ Use package.json to manage build scripts
- ❌ Use package.json to manage testing
- ✅ Use package.json to manage a script toolchain
- ✅ Publish a module to the public NPM registry
- ✅ Publish a module to a private NPM registry
- ✅ Update a module on an NPM registry
- ✅ Use SemVer to version your package
- ❌ Use a generated documentation package to document your API
- ❌ Write a simple code example for your documentation
- ✅ Create a quickstart for your documentation
- ✅ Create unit tests for your API
- ✅ Create integration tests for your module
- ✅ Configure authorship and communication references in your package.json to provide support for your package
- ❌ Choose a license for your package
Given the insights are tagged with aspects, we can filter over the linear content progression and create learning sub-paths.
These sub-path progressions will most likely not cover all content, but they will ensure and enforce an unified learning experience, tailor for the user wish.
For example, a user might be interested in new additions and updates of a language, rather than introduction lessions. Note that these sub-paths don't take games into consideration
If you are being introduced to the topic for the first time
Insights:
- what-is-npm
- why-use-npm
- setting-up-npm
- package-json
- semantic-versioning
- npm-scripting
- available-binaries-for-scripting
- npm-variables
- scripts-lifecycle
- remote-scripts
- packages-vs-modules
- dependencies
- passing-through-command-line-arguments-in-npm-scripts
- prepare-your-module-for-publishing
- tests
- how-to-publish-your-own-packages
- check-data-about-a-package
- manage-local-node-modules-with-npm-link
- bump-package-version-in-npm
- deprecate-npm-packages
Theory put into practice/that’s how you achieve X points
Insights:
- what-is-npm
- semantic-versioning
- npm-scripting
- available-binaries-for-scripting
- npm-variables
- scripts-lifecycle
- remote-scripts
- packages-vs-modules
- private-packages
- dependencies
- deprecated-peer-dependencies
- how-npm3-handles-dependencies
- optionaldependencies-in-npm
- environmental-variables-and-flags-for-npm
- passing-through-command-line-arguments-in-npm-scripts
- npm-verifies-sha1-hashes-of-packages
- creating-a-node-module
- prepare-your-module-for-publishing
- tests
- how-to-publish-your-own-packages
- check-data-about-a-package
- package-distribution-tags
- registry-user-accounts-for-npm
- manage-local-node-modules-with-npm-link
- manipulate-npm-packages-cache
- lock-down-dependency-versions-by-shrinkwrapping
- bump-package-version-in-npm
- deprecate-npm-packages
Prerequisite knowledge consisting of 2 or more 👶/💪 workouts
Insights:
- semantic-versioning
- npm-scripting
- available-binaries-for-scripting
- npm-variables
- scripts-lifecycle
- remote-scripts
- packages-vs-modules
- private-packages
- dependencies
- deprecated-peer-dependencies
- how-npm3-handles-dependencies
- optionaldependencies-in-npm
- environmental-variables-and-flags-for-npm
- passing-through-command-line-arguments-in-npm-scripts
- npm-verifies-sha1-hashes-of-packages
- creating-a-node-module
- prepare-your-module-for-publishing
- check-data-about-a-package
- registry-user-accounts-for-npm
- manipulate-npm-packages-cache
- lock-down-dependency-versions-by-shrinkwrapping
- deprecate-npm-packages
Recently added/gained traction feature
Insights:
- private-packages
- deprecated-peer-dependencies
- how-npm3-handles-dependencies
- creating-a-node-module
- manipulate-npm-packages-cache
- lock-down-dependency-versions-by-shrinkwrapping
Stories, obscure details that don’t specifically relate to a learning objective
Insights:
✅ All content has been tagged with aspects.
Want to contribute to this wiki? Go right ahead! If it has to do with how the Enki software ecosystem works, or editorial guidelines for how to write, let us handle that. Anything else, edit away!
Curriculum Format:
- Topic Documentation
- Course Documentation
- Workout Documentation
- Insight Documentation
- Glossary Documentation
Contributor Resources:
Curriculum overview:
Topic pages: