# package.json

Published articles for package.json.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## pnpm 11.28.11

DevFeed: [pnpm 11.28.11](<https://devfeed.tech/articles/pnpm-11-28-11-119298.md>)

Original publisher: [Read original article](<https://pnpm.io/blog/releases/11.28.11>)

Author: Zoltan Kochan

Published: 2026-11-05T00:00:00Z

Content type: release

Language: en

Sources: [pnpm](<https://devfeed.tech/sources/pnpm-blog.md>)

Topics: [pnpm](<https://devfeed.tech/topics/pnpm.md>)

Tags: [node-js](<https://devfeed.tech/tags/node-js.md>), [npm](<https://devfeed.tech/tags/npm.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [pnpm](<https://devfeed.tech/tags/pnpm.md>), [posix](<https://devfeed.tech/tags/posix.md>)

### AI overview

pnpm 11.28.11 fixes several install and workspace edge cases. Frozen installs now accept lockfiles generated with `excludeLinksFromLockfile` and `linkWorkspacePackages` enabled, including workspace dependencies specified by version range or `catalog:` entry. `pnpm link` records dependencies in the current workspace project and handles multiple links; invalid package names now fail without modifying manifests. `pnpm deploy` preserves dangling symlinks, and `verifyDepsBeforeRun` detects dependency changes in local directory dependencies while avoiding needless installs after certain version-only changes. Other fixes cover bundled dependencies restored from the side-effects cache, runtime and command shims, lockfile resolution, update selectors, store status and pruning, and cached engine repair during self-update.

### Source excerpt

pnpm 11.28.11 fixes frozen installs with excludeLinksFromLockfile, pnpm link in workspaces, pnpm deploy with dangling symlinks, and verifyDepsBeforeRun starting needless installs.

## npm uninstall: How to Remove (and Update) npm Packages

DevFeed: [npm uninstall: How to Remove (and Update) npm Packages](<https://devfeed.tech/articles/npm-uninstall-how-to-remove-and-update-npm-packages-99224.md>)

Original publisher: [Read original article](<https://markodenic.com/npm-uninstall-package/>)

Author: Marko

Published: 2026-10-25T09:00:00Z

Content type: tutorial

Language: en

Sources: [Marko Denic Blog](<https://devfeed.tech/sources/marko-denic-blog.md>)

Topics: [npm](<https://devfeed.tech/topics/npm.md>), [Package Management](<https://devfeed.tech/topics/package-management.md>)

Tags: [dependencies](<https://devfeed.tech/tags/dependencies.md>), [deployments](<https://devfeed.tech/tags/deployments.md>), [dev](<https://devfeed.tech/tags/dev.md>), [eslint](<https://devfeed.tech/tags/eslint.md>), [global](<https://devfeed.tech/tags/global.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [install](<https://devfeed.tech/tags/install.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [latest](<https://devfeed.tech/tags/latest.md>), [latest-tag](<https://devfeed.tech/tags/latest-tag.md>), [local](<https://devfeed.tech/tags/local.md>), [major](<https://devfeed.tech/tags/major.md>), [npm](<https://devfeed.tech/tags/npm.md>), [npm-packages](<https://devfeed.tech/tags/npm-packages.md>), [npx](<https://devfeed.tech/tags/npx.md>), [package](<https://devfeed.tech/tags/package.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [pnpm](<https://devfeed.tech/tags/pnpm.md>), [project](<https://devfeed.tech/tags/project.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [update](<https://devfeed.tech/tags/update.md>), [web-development](<https://devfeed.tech/tags/web-development.md>), [yarn](<https://devfeed.tech/tags/yarn.md>)

### AI overview

`npm uninstall <package>` removes a package from `node_modules`, `package.json`, and `package-lock.json`; it works for dependencies and dev dependencies, and multiple names can be supplied. Global packages require `-g`. For a clean reinstall matching the lock file, `npm ci` deletes `node_modules` and fails if the lock file conflicts with `package.json`; `npm install` can update the lock file. `npm outdated` shows newer versions, while `npm update` stays within declared version ranges and does not cross major versions. For latest major releases, the excerpt recommends updating ranges with `npm-check-updates` or installing `@latest`, then reviewing changelogs and running tests. `npm ls` can show why a package remains installed, and Knip can identify unused dependencies. The excerpt advises using one package manager per project to avoid conflicting lock files.

### Source excerpt

How to uninstall npm packages: local, dev and global packages, several at once, everything in node_modules, finding unused dependencies, plus how to update all packages and the yarn and pnpm equivalents.

## pnpm 12.12.1

DevFeed: [pnpm 12.12.1](<https://devfeed.tech/articles/pnpm-12-12-1-85020.md>)

Original publisher: [Read original article](<https://pnpm.io/blog/releases/12.12.1>)

Author: Zoltan Kochan

Published: 2026-10-11T00:00:00Z

Content type: release

Language: en

Sources: [pnpm](<https://devfeed.tech/sources/pnpm-blog.md>)

Topics: [pnpm](<https://devfeed.tech/topics/pnpm.md>), [Secure token management](<https://devfeed.tech/topics/secure-token-management.md>), [npm packages](<https://devfeed.tech/topics/npm-packages.md>)

Tags: [authentication](<https://devfeed.tech/tags/authentication.md>), [bun](<https://devfeed.tech/tags/bun.md>), [ci](<https://devfeed.tech/tags/ci.md>), [deno](<https://devfeed.tech/tags/deno.md>), [node](<https://devfeed.tech/tags/node.md>), [npm](<https://devfeed.tech/tags/npm.md>), [oidc](<https://devfeed.tech/tags/oidc.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [pnpm](<https://devfeed.tech/tags/pnpm.md>), [registry](<https://devfeed.tech/tags/registry.md>), [token](<https://devfeed.tech/tags/token.md>)

### AI overview

pnpm 12.12.1 adds OIDC authentication for `pnpm dist-tag` in CI, checks that publish tokens match the selected registry, and introduces the `tool:` protocol for downloading tools such as Node.js, Bun, Deno, and Yarn. The existing `runtime:` spelling remains supported.

### Source excerpt

This release adds OIDC authentication to pnpm dist-tag and the tool: protocol. pnpm publish now checks which registry an NPM_ID_TOKEN was issued for before using it.

## pnpm 11.28.4

DevFeed: [pnpm 11.28.4](<https://devfeed.tech/articles/pnpm-11-28-4-64429.md>)

Original publisher: [Read original article](<https://pnpm.io/blog/releases/11.28.4>)

Author: Zoltan Kochan

Published: 2026-10-03T00:00:00Z

Content type: release

Language: en

Sources: [pnpm](<https://devfeed.tech/sources/pnpm-blog.md>)

Topics: [pnpm](<https://devfeed.tech/topics/pnpm.md>), [Dependency management](<https://devfeed.tech/topics/dependency-management.md>), [Deployment Strategies](<https://devfeed.tech/topics/deployment-strategies.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.md>), [credentials](<https://devfeed.tech/tags/credentials.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [docker](<https://devfeed.tech/tags/docker.md>), [docker-build-context](<https://devfeed.tech/tags/docker-build-context.md>), [homebrew](<https://devfeed.tech/tags/homebrew.md>), [linux](<https://devfeed.tech/tags/linux.md>), [network](<https://devfeed.tech/tags/network.md>), [node](<https://devfeed.tech/tags/node.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [pnpm](<https://devfeed.tech/tags/pnpm.md>)

### AI overview

pnpm 11.28.4 fixes credential exposure during redirects and tarball integrity errors, improves frozen lockfile installs and handling of optional dependencies, and adjusts behavior for networking, scripts, workspace filtering, and updates. It also avoids installing a second pnpm alongside a Homebrew-managed installation.

### Source excerpt

pnpm 11.28.4 fixes two ways credentials could leak, makes pnpm install --frozen-lockfile accept several lockfiles it rejected, warns when an optional dependency cannot be fetched, and stops pnpm self-update from installing a second pnpm next to a Homebrew one.

## What happens when you scaffold a Playwright framework and run installed tests using bun?

DevFeed: [What happens when you scaffold a Playwright framework and run installed tests using bun?](<https://devfeed.tech/articles/what-happens-when-you-scaffold-a-playwright-framework-and-run-installed-tests-using-bun-22425.md>)

Original publisher: [Read original article](<https://www.tjmaher.com/2026/08/what-happens-when-you-create-playwright.html>)

Author: T.J. Maher (noreply@blogger.com)

Published: 2026-08-06T17:37:06Z

Content type: tutorial

Language: en

Sources: [T.J. Maher](<https://devfeed.tech/sources/t-j-maher.md>)

Topics: [Playwright](<https://devfeed.tech/topics/playwright.md>), [Bun](<https://devfeed.tech/topics/bun.md>), [Test automation](<https://devfeed.tech/topics/test-automation.md>)

Tags: [browsers](<https://devfeed.tech/tags/browsers.md>), [bug](<https://devfeed.tech/tags/bug.md>), [bun](<https://devfeed.tech/tags/bun.md>), [bun-create-playwright](<https://devfeed.tech/tags/bun-create-playwright.md>), [dev](<https://devfeed.tech/tags/dev.md>), [framework](<https://devfeed.tech/tags/framework.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [gitlab](<https://devfeed.tech/tags/gitlab.md>), [install](<https://devfeed.tech/tags/install.md>), [javascript-runtime](<https://devfeed.tech/tags/javascript-runtime.md>), [node](<https://devfeed.tech/tags/node.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [npx](<https://devfeed.tech/tags/npx.md>), [package](<https://devfeed.tech/tags/package.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [playwright](<https://devfeed.tech/tags/playwright.md>), [powershell](<https://devfeed.tech/tags/powershell.md>), [run](<https://devfeed.tech/tags/run.md>), [tests](<https://devfeed.tech/tags/tests.md>), [typescript](<https://devfeed.tech/tags/typescript.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

The excerpt shows bun being used as the package manager alongside Node.js, which still runs Playwright's test runner. The author scaffolds a TypeScript project with `bun create playwright`, then notes a Windows issue requiring `bun add --dev @playwright/test` and `bunx playwright install` to install browsers. They run `bun install`, keep the generated `bun.lock.file`, remove `package-lock.json`, and add a test script to `package.json`. The included tests visit playwright.dev and check its title and "Get started" link; the excerpt outlines Playwright's arrange-act-assert pattern and locator actions and assertions. Tests are run with `bun run test`, with the generated report opened through Live Server. The excerpt cuts off during its description of installed dependencies.

### Source excerpt

We covered in the last blog post how to install bun, a new package manager. In this blog post, we will look into using bun to install a new Playwright framework. Create the Playwright Framework Once I installed bun on my Windows PC and was up and running I created a new folder, "bun-create-playwright". I opened up that folder in VS Code, along with a new PowerShell terminal. In that terminal I entered: bun create playwright This activated the interactive Playwright installer that Playwright comes with. I selected I wanted it to create for me a TypeScript project, placing the tests in the default folder, tests, but I decided not to add a GitHub Actions workflow. I wanted to experiment with using GitLab. I chose it to set up and install all the browsers for me... which it did... using NPX, part of Node. Wait a second, when it comes to our Playwright framework, doesn't bun replace node? No. Bun might be a JavaScript runtime, a package manager, and a bundler shipped as a single software tool, but in our case we are simply using it as a package manager in our Playwright framework. Bun works alongside Node.js in the Playwright project. We still use Playwright's test runner, a Node.js program. Bun handles installations and run tasks. Alert: Windows Bug! Initially, that wasn't enough to install Playwright's internal browsers. There is a bug with bun + Playwright Windows where we also need to: bun add --dev @playwright/test bunx playwright install That was enough for the browsers to install. Create the Bun Lock File After the browsers are installed, we need to install bun in our project, to create from the package.json a bun installation. Run in the Terminal: bun install Review the newly created file bun.lock.file in the root directory of the project. Delete the package-lock.json file. Add the test script to the Package.json If you look in the package.json file, you can see that the scripts code block is currently empty. "scripts": {} Inside this code block, we will be addin

## Staged publishing and new install-time controls for npm

DevFeed: [Staged publishing and new install-time controls for npm](<https://devfeed.tech/articles/staged-publishing-and-new-install-time-controls-for-npm-71764.md>)

Original publisher: [Read original article](<https://github.blog/changelog/2026-05-22-staged-publishing-and-new-install-time-controls-for-npm>)

Author: Allison

Published: 2026-05-22T18:27:12Z

Content type: release

Language: en

Sources: [GitHub Changelog](<https://devfeed.tech/sources/github-changelog.md>)

Topics: [npm](<https://devfeed.tech/topics/npm.md>), [npm security](<https://devfeed.tech/topics/npm-security.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>)

Tags: [2fa](<https://devfeed.tech/tags/2fa.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [ci-cd-workflows](<https://devfeed.tech/tags/ci-cd-workflows.md>), [cli](<https://devfeed.tech/tags/cli.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [directory](<https://devfeed.tech/tags/directory.md>), [file](<https://devfeed.tech/tags/file.md>), [flag](<https://devfeed.tech/tags/flag.md>), [git](<https://devfeed.tech/tags/git.md>), [install](<https://devfeed.tech/tags/install.md>), [npm](<https://devfeed.tech/tags/npm.md>), [oidc](<https://devfeed.tech/tags/oidc.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [publishing](<https://devfeed.tech/tags/publishing.md>), [queue](<https://devfeed.tech/tags/queue.md>), [registry](<https://devfeed.tech/tags/registry.md>), [remote](<https://devfeed.tech/tags/remote.md>), [security](<https://devfeed.tech/tags/security.md>), [supply-chain](<https://devfeed.tech/tags/supply-chain.md>), [supply-chain-security](<https://devfeed.tech/tags/supply-chain-security.md>)

### AI overview

npm CLI 11.15.0 adds staged publishing and three install-source controls. With `npm stage publish`, a package tarball enters a queue and remains unavailable until a human maintainer approves it with a 2FA challenge, through the website or CLI. CI workflows can publish non-interactively to the queue; stage-only trusted publishing (OIDC) rejects `npm publish` from that workflow. The new `--allow-file`, `--allow-remote`, and `--allow-directory` flags govern local paths and tarballs, remote URLs, and local directories, respectively. Along with existing `--allow-git`, each accepts `all` (the current default) or `none`, and can be configured in `.npmrc` or `package.json`. The text says `--allow-git` is slated to default to `none` in CLI v12; the three new flags can be set to `none` now.

### Source excerpt

Today we're shipping two updates focused on supply-chain security for npm: Staged publishing is generally available. New -allow-* install source flags (-allow-file, -allow-remote, -allow-directory) complement the existing -allow-git flag. Both...

## Bun v1.0.36

DevFeed: [Bun v1.0.36](<https://devfeed.tech/articles/bun-v1-0-36-49375.md>)

Original publisher: [Read original article](<https://bun.com/blog/bun-v1.0.36>)

Author: Ashcon Partovi

Published: 2024-03-29T07:03:02Z

Content type: release

Language: en

Sources: [Bun](<https://devfeed.tech/sources/bun-com.md>)

Topics: [Bun](<https://devfeed.tech/topics/bun.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Node.js](<https://devfeed.tech/topics/node-js.md>), [releases](<https://devfeed.tech/topics/releases.md>), [.env](<https://devfeed.tech/topics/dotenv.md>), [Shell](<https://devfeed.tech/topics/shell.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [bug](<https://devfeed.tech/tags/bug.md>), [bun](<https://devfeed.tech/tags/bun.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [process](<https://devfeed.tech/tags/process.md>), [releases](<https://devfeed.tech/tags/releases.md>), [shell](<https://devfeed.tech/tags/shell.md>), [v1](<https://devfeed.tech/tags/v1.md>)

### AI overview

Bun v1.0.36 fixes 13 bugs and adds support for fs.openAsBlob and fs.opendir. The release also improves Node.js compatibility, Bun installation, shell behavior, encoding, HTTP/2, environment-variable handling, and process standard input and output.

### Source excerpt

Fixes 13 bugs. Adds support for `fs.openAsBlob` and `fs.opendir`, fixes edgecase in bun install with multiple `bin` entries in `package.json`, fixes `bun build --target bun` encoding, fixes bug with process.stdin & process.stdout, fixes bug in http2, fixes bug with .env in bun run, fixes various Bun shell bugs and improves Node.js compatibility.

## Versioning and Releasing Packages in a Monorepo

DevFeed: [Versioning and Releasing Packages in a Monorepo](<https://devfeed.tech/articles/versioning-and-releasing-packages-in-a-monorepo-21456.md>)

Original publisher: [Read original article](<https://nx.dev/blog/versioning-and-releasing-packages-in-a-monorepo>)

Author: Juri Strumpflohner

Published: 2024-02-09T00:00:00Z

Content type: tutorial

Language: en

Sources: [Juri Strumpflohner](<https://devfeed.tech/sources/juri-strumpflohner.md>)

Topics: [versioning](<https://devfeed.tech/topics/versioning.md>), [monorepo](<https://devfeed.tech/topics/monorepo.md>), [project release](<https://devfeed.tech/topics/project-release.md>), [npm packages](<https://devfeed.tech/topics/npm-packages.md>), [pnpm](<https://devfeed.tech/topics/pnpm.md>)

Tags: [changelog](<https://devfeed.tech/tags/changelog.md>), [commits](<https://devfeed.tech/tags/commits.md>), [conventional-commits](<https://devfeed.tech/tags/conventional-commits.md>), [dry-run](<https://devfeed.tech/tags/dry-run.md>), [git](<https://devfeed.tech/tags/git.md>), [git-commands](<https://devfeed.tech/tags/git-commands.md>), [git-tags](<https://devfeed.tech/tags/git-tags.md>), [monorepo](<https://devfeed.tech/tags/monorepo.md>), [npm](<https://devfeed.tech/tags/npm.md>), [npm-packages](<https://devfeed.tech/tags/npm-packages.md>), [nuget](<https://devfeed.tech/tags/nuget.md>), [nx](<https://devfeed.tech/tags/nx.md>), [nx-cloud](<https://devfeed.tech/tags/nx-cloud.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [packages](<https://devfeed.tech/tags/packages.md>), [pnpm](<https://devfeed.tech/tags/pnpm.md>), [release](<https://devfeed.tech/tags/release.md>), [releases](<https://devfeed.tech/tags/releases.md>), [version](<https://devfeed.tech/tags/version.md>), [versioning](<https://devfeed.tech/tags/versioning.md>)

### AI overview

Nx Release can run versioning, changelog generation, and publishing together for packages in a monorepo, using project dependency relationships to optimize task runs. The excerpt says the JS/TS publishing approach is provided by the Nx team, while other ecosystems such as Cargo or NuGet could use a custom implementation; Project Crystal plugins are optional. A dry run previews changes, including package and lockfile version updates, staged changes, a generated file, a Git commit, and a version tag. On a repository without release history, Nx Release may lack prior Git tags needed for changelog generation; the excerpt recommends rerunning with an omitted option, whose value is missing from the supplied text.

### Source excerpt

Learn how to use Nx Release to version and publish packages in your monorepo with conventional commits and automated changelog generation.

## Bun v1.0.11

DevFeed: [Bun v1.0.11](<https://devfeed.tech/articles/bun-v1-0-11-49349.md>)

Original publisher: [Read original article](<https://bun.com/blog/bun-v1.0.11>)

Author: Jarred Sumner

Published: 2023-11-08T07:39:33Z

Content type: release

Language: en

Sources: [Bun](<https://devfeed.tech/sources/bun-com.md>)

Topics: [Bun](<https://devfeed.tech/topics/bun.md>), [bugfixes](<https://devfeed.tech/topics/bugfixes.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Package Management](<https://devfeed.tech/topics/package-management.md>), [version](<https://devfeed.tech/topics/version.md>), [TLS (Transport Layer Security)](<https://devfeed.tech/topics/tls.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [astro](<https://devfeed.tech/tags/astro.md>), [blog](<https://devfeed.tech/tags/blog.md>), [bug](<https://devfeed.tech/tags/bug.md>), [bug-fixes](<https://devfeed.tech/tags/bug-fixes.md>), [bugs](<https://devfeed.tech/tags/bugs.md>), [bun](<https://devfeed.tech/tags/bun.md>), [cloud-storage](<https://devfeed.tech/tags/cloud-storage.md>), [docker](<https://devfeed.tech/tags/docker.md>), [error](<https://devfeed.tech/tags/error.md>), [error-handling](<https://devfeed.tech/tags/error-handling.md>), [google](<https://devfeed.tech/tags/google.md>), [install](<https://devfeed.tech/tags/install.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [javascript-runtime](<https://devfeed.tech/tags/javascript-runtime.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [release](<https://devfeed.tech/tags/release.md>), [runtime](<https://devfeed.tech/tags/runtime.md>), [sorting](<https://devfeed.tech/tags/sorting.md>), [v1](<https://devfeed.tech/tags/v1.md>)

### AI overview

Bun v1.0.11 is a stable release of the JavaScript runtime, bundler, transpiler, and package manager. It fixes bugs in bun install, Astro support, Google Cloud Storage compatibility, Docker usage, TLS handling, semver sorting, exception printing, and Node.js compatibility, while adding the Bun.semver API and other improvements.

### Source excerpt

Fixes 5 bugs, adds Bun.semver, fixes a bug in bun install and fixes bugs impacting astro and @google-cloud/storage

## Block npm package publishes when names and versions don't match between manifest and tarball package.json

DevFeed: [Block npm package publishes when names and versions don't match between manifest and tarball package.json](<https://devfeed.tech/articles/block-npm-package-publishes-when-names-and-versions-don-t-match-between-manifest-and-tarball-package-json-73351.md>)

Original publisher: [Read original article](<https://github.blog/changelog/2023-09-27-block-npm-package-publishes-when-names-and-versions-dont-match-between-manifest-and-tarball-package-json>)

Author: Kevin Duck

Published: 2023-09-27T20:40:20Z

Content type: release

Language: en

Sources: [GitHub Changelog](<https://devfeed.tech/sources/github-changelog.md>)

Topics: [npm packages](<https://devfeed.tech/topics/npm-packages.md>), [npm](<https://devfeed.tech/topics/npm.md>), [npm security](<https://devfeed.tech/topics/npm-security.md>)

Tags: [block](<https://devfeed.tech/tags/block.md>), [manifest](<https://devfeed.tech/tags/manifest.md>), [npm](<https://devfeed.tech/tags/npm.md>), [npm-package](<https://devfeed.tech/tags/npm-package.md>), [obfuscation](<https://devfeed.tech/tags/obfuscation.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [pkg](<https://devfeed.tech/tags/pkg.md>), [registry](<https://devfeed.tech/tags/registry.md>), [validation](<https://devfeed.tech/tags/validation.md>)

### AI overview

Since September 27, 2023, npm blocks package publishes when the name or version in the manifest differs from the corresponding field in the packaged tarball's package.json, a measure intended to prevent obfuscation. The excerpt says these mismatches were selected using a risk-based assessment and that npm will continue evaluating other mismatches for blocking while considering possible ecosystem effects. If a publish is blocked, users should make changes to package.json before creating the tarball; npm pkg fix can help resolve registry validation errors.

### Source excerpt

On September 27, 2023, we began blocking npm package publishes with differing name or version fields between the manifest and tarball package.json. This blocking protects against obfuscation. The different fields...

## Bun v0.5.1

DevFeed: [Bun v0.5.1](<https://devfeed.tech/articles/bun-v0-5-1-49320.md>)

Original publisher: [Read original article](<https://bun.com/blog/bun-v0.5.1>)

Author: Jarred Sumner

Published: 2023-01-19T18:10:45Z

Content type: release

Language: en

Sources: [Bun](<https://devfeed.tech/sources/bun-com.md>)

Topics: [Bun](<https://devfeed.tech/topics/bun.md>), [bug](<https://devfeed.tech/topics/bug.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [Parameter](<https://devfeed.tech/topics/parameter.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [bug-fixes](<https://devfeed.tech/tags/bug-fixes.md>), [bun](<https://devfeed.tech/tags/bun.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [release](<https://devfeed.tech/tags/release.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

Bun v0.5.1 adds package.json dependency aliasing, improved errors for missing workspaces, and fixes for regressions, crashes, environment-variable handling, BoringSSL error messages, and TypeScript transpilation.

### Source excerpt

Support for aliasing package.json dependencies, a better error message when a workspace is not found, and a few important bug fixes.

## Dependabot can now generate security and version updates for Yarn v2 and v3

DevFeed: [Dependabot can now generate security and version updates for Yarn v2 and v3](<https://devfeed.tech/articles/dependabot-can-now-generate-security-and-version-updates-for-yarn-v2-and-v3-73824.md>)

Original publisher: [Read original article](<https://github.blog/changelog/2022-10-20-dependabot-can-now-generate-security-and-version-updates-for-yarn-v2-and-v3>)

Author: Kevin Duck

Published: 2022-10-20T17:20:05Z

Content type: release

Language: en

Sources: [GitHub Changelog](<https://devfeed.tech/sources/github-changelog.md>)

Topics: [Yarn](<https://devfeed.tech/topics/yarn.md>), [Dependabot](<https://devfeed.tech/topics/dependabot.md>), [software composition analysis](<https://devfeed.tech/topics/software-composition-analysis.md>)

Tags: [added](<https://devfeed.tech/tags/added.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [dependabot](<https://devfeed.tech/tags/dependabot.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [ecosystem](<https://devfeed.tech/tags/ecosystem.md>), [file](<https://devfeed.tech/tags/file.md>), [files](<https://devfeed.tech/tags/files.md>), [npm](<https://devfeed.tech/tags/npm.md>), [npm-ecosystem](<https://devfeed.tech/tags/npm-ecosystem.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [proactive](<https://devfeed.tech/tags/proactive.md>), [security](<https://devfeed.tech/tags/security.md>), [support](<https://devfeed.tech/tags/support.md>), [updates](<https://devfeed.tech/tags/updates.md>), [updating](<https://devfeed.tech/tags/updating.md>), [v1](<https://devfeed.tech/tags/v1.md>), [v2](<https://devfeed.tech/tags/v2.md>), [v3](<https://devfeed.tech/tags/v3.md>), [version](<https://devfeed.tech/tags/version.md>), [yarn](<https://devfeed.tech/tags/yarn.md>)

### AI overview

Dependabot now supports security and version updates for dependencies in Yarn v2 and v3 `package.json` and `yarn.lock` files, alongside existing Yarn v1 support. No action is needed for repositories with Dependabot security updates enabled. To receive proactive version updates, add an `npm` ecosystem entry to `dependabot.yml`. The excerpt does not provide further setup details.

### Source excerpt

Dependabot has added support for updating dependencies in Yarn v2 and Yarn v3 manifests (package.json, and yarn.lock files). This is in addition to the existing support for Yarn v1. There...

## Cron Jobs on Railway

DevFeed: [Cron Jobs on Railway](<https://devfeed.tech/articles/cron-jobs-on-railway-95529.md>)

Original publisher: [Read original article](<https://blog.railway.com/p/cron-jobs>)

Author: Faraz Patankar

Published: 2022-08-18T00:00:00Z

Content type: tutorial

Language: en

Sources: [Railway](<https://devfeed.tech/sources/railway.md>)

Topics: [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Node.js](<https://devfeed.tech/topics/node-js.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [build](<https://devfeed.tech/tags/build.md>), [cli](<https://devfeed.tech/tags/cli.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [cron](<https://devfeed.tech/tags/cron.md>), [deploy](<https://devfeed.tech/tags/deploy.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [jobs](<https://devfeed.tech/tags/jobs.md>), [library](<https://devfeed.tech/tags/library.md>), [node](<https://devfeed.tech/tags/node.md>), [npx](<https://devfeed.tech/tags/npx.md>), [package](<https://devfeed.tech/tags/package.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [railway](<https://devfeed.tech/tags/railway.md>)

### AI overview

The guide shows how to run a JavaScript cron service on Railway: scaffold a TypeScript package, install `node-cron`, schedule a task, and set the start script to run the built file in `dist`. Build and start locally, then deploy with the Railway CLI using `railway up`; the example logs once per minute and requires no additional deployment configuration. A dated update says Railway later added native Cron Jobs and points readers to its documentation.

### Source excerpt

A brief guide on deploying and running cron jobs on Railway using JavaScript.

## Dependabot now schedules version updates uniformly

DevFeed: [Dependabot now schedules version updates uniformly](<https://devfeed.tech/articles/dependabot-now-schedules-version-updates-uniformly-74428.md>)

Original publisher: [Read original article](<https://github.blog/changelog/2021-06-16-dependabot-now-schedules-version-updates-uniformly>)

Author: phanatic

Published: 2021-06-16T19:32:09Z

Content type: release

Language: en

Sources: [GitHub Changelog](<https://devfeed.tech/sources/github-changelog.md>)

Topics: [Dependabot](<https://devfeed.tech/topics/dependabot.md>), [timezone](<https://devfeed.tech/topics/timezone.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [config](<https://devfeed.tech/tags/config.md>), [daily](<https://devfeed.tech/tags/daily.md>), [dependabot](<https://devfeed.tech/tags/dependabot.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [monthly](<https://devfeed.tech/tags/monthly.md>), [npm](<https://devfeed.tech/tags/npm.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [properties](<https://devfeed.tech/tags/properties.md>), [random](<https://devfeed.tech/tags/random.md>), [repository](<https://devfeed.tech/tags/repository.md>), [schedule](<https://devfeed.tech/tags/schedule.md>), [schedules](<https://devfeed.tech/tags/schedules.md>), [time](<https://devfeed.tech/tags/time.md>), [timezone](<https://devfeed.tech/tags/timezone.md>), [update](<https://devfeed.tech/tags/update.md>), [updates](<https://devfeed.tech/tags/updates.md>), [utc](<https://devfeed.tech/tags/utc.md>), [version](<https://devfeed.tech/tags/version.md>), [weekly](<https://devfeed.tech/tags/weekly.md>)

### AI overview

Dependabot no longer starts version updates without a specified time at 5 AM UTC for every repository. It assigns each repository a random start time, with all updates in that repository starting then, to reduce usage spikes that slow updates. To choose a start time, configure `schedule.time` and `schedule.timezone` for each update; the excerpt shows separate UTC and Pacific schedules for two npm directories.

### Source excerpt

Unless a specific time is provided, Dependabot version updates run at 5AM UTC daily, weekly, or monthly; however, this results in large usage spikes that slow down updates for everyone....

## npm displays packages with bundled TypeScript declarations

DevFeed: [npm displays packages with bundled TypeScript declarations](<https://devfeed.tech/articles/npm-displays-packages-with-bundled-typescript-declarations-74577.md>)

Original publisher: [Read original article](<https://github.blog/changelog/2020-12-16-npm-displays-packages-with-bundled-typescript-declarations>)

Author: phanatic

Published: 2020-12-16T19:29:19Z

Content type: release

Language: en

Sources: [GitHub Changelog](<https://devfeed.tech/sources/github-changelog.md>)

Topics: [npm packages](<https://devfeed.tech/topics/npm-packages.md>), [npm](<https://devfeed.tech/topics/npm.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>)

Tags: [built-in](<https://devfeed.tech/tags/built-in.md>), [change](<https://devfeed.tech/tags/change.md>), [developers](<https://devfeed.tech/tags/developers.md>), [display](<https://devfeed.tech/tags/display.md>), [file](<https://devfeed.tech/tags/file.md>), [help](<https://devfeed.tech/tags/help.md>), [inside](<https://devfeed.tech/tags/inside.md>), [json](<https://devfeed.tech/tags/json.md>), [key](<https://devfeed.tech/tags/key.md>), [know](<https://devfeed.tech/tags/know.md>), [npm](<https://devfeed.tech/tags/npm.md>), [npm-packages](<https://devfeed.tech/tags/npm-packages.md>), [package](<https://devfeed.tech/tags/package.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [packages](<https://devfeed.tech/tags/packages.md>), [published](<https://devfeed.tech/tags/published.md>), [registry](<https://devfeed.tech/tags/registry.md>), [types](<https://devfeed.tech/tags/types.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

When a package publishes a TypeScript declaration file and points to it with the `types` or `typings` key in `package.json`, the npm registry displays that the package has available bindings. This helps developers identify packages with built-in TypeScript declarations.

### Source excerpt

npm packages may include bundled TypeScript declarations. When this declaration file is published inside a package and specified using the types or typings key in the package's package.json, the npm...

## Solving conflicts in package-lock.json

DevFeed: [Solving conflicts in package-lock.json](<https://devfeed.tech/articles/solving-conflicts-in-package-lock-json-48233.md>)

Original publisher: [Read original article](<https://tkdodo.eu/blog/solving-conflicts-in-package-lock-json>)

Published: 2020-09-02T00:00:00Z

Content type: tutorial

Language: en

Sources: [TkDodo](<https://devfeed.tech/sources/tkdodo-s-blog.md>)

Topics: [npm](<https://devfeed.tech/topics/npm.md>), [consistency](<https://devfeed.tech/topics/consistency.md>), [Git](<https://devfeed.tech/topics/git.md>), [Pull Request](<https://devfeed.tech/topics/pull-request.md>), [versioning](<https://devfeed.tech/topics/versioning.md>)

Tags: [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [consistency](<https://devfeed.tech/tags/consistency.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [git](<https://devfeed.tech/tags/git.md>), [npm](<https://devfeed.tech/tags/npm.md>), [package-json](<https://devfeed.tech/tags/package-json.md>)

### AI overview

A practical explanation of why deleting package-lock.json can introduce dependency drift when resolving Git conflicts. The article explains how npm lockfiles preserve compatible dependency versions across developers, CI/CD, and production, and why regenerating the file can undermine that consistency.

### Source excerpt

Why you should never delete package-lock.json and how npm can solve the conflicts for you

## Detect when node\_modules are out of sync

DevFeed: [Detect when node\_modules are out of sync](<https://devfeed.tech/articles/detect-when-node-modules-are-out-of-sync-21371.md>)

Original publisher: [Read original article](<https://juri.dev/blog/2020/09/detect-node_modules-out-of-sync/>)

Published: 2020-09-01T00:00:00Z

Content type: tutorial

Language: en

Sources: [Juri Strumpflohner](<https://devfeed.tech/sources/juri-strumpflohner.md>)

Topics: [npm packages](<https://devfeed.tech/topics/npm-packages.md>), [npm](<https://devfeed.tech/topics/npm.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>)

Tags: [git](<https://devfeed.tech/tags/git.md>), [git-hook](<https://devfeed.tech/tags/git-hook.md>), [git-hooks](<https://devfeed.tech/tags/git-hooks.md>), [github](<https://devfeed.tech/tags/github.md>), [modules](<https://devfeed.tech/tags/modules.md>), [node](<https://devfeed.tech/tags/node.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [script](<https://devfeed.tech/tags/script.md>), [switch](<https://devfeed.tech/tags/switch.md>), [sync](<https://devfeed.tech/tags/sync.md>), [tooling](<https://devfeed.tech/tags/tooling.md>)

### AI overview

The excerpt proposes detecting when dependencies may need reinstalling after a branch or commit change by checking Git's changed-file list for package.json. It describes implementing the check as a Node.js script using shelljs to run Git and read its output, then installing it as a Husky checkout hook so it runs when switching commits or branches. The excerpt omits the actual Git command, script, and hook configuration, so their exact behavior cannot be assessed.

### Source excerpt

Lorem ipsum dolor sit amet

## Add git version tag after publishing to npm

DevFeed: [Add git version tag after publishing to npm](<https://devfeed.tech/articles/add-git-version-tag-after-publishing-to-npm-37234.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/add-git-version-tag-after-publishing-to-npm/>)

Author: Stanko

Published: 2018-07-12T00:00:00Z

Content type: tutorial

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [Git](<https://devfeed.tech/topics/git.md>), [npm](<https://devfeed.tech/topics/npm.md>), [version](<https://devfeed.tech/topics/version.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Script](<https://devfeed.tech/topics/script.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [code](<https://devfeed.tech/tags/code.md>), [git](<https://devfeed.tech/tags/git.md>), [git-tags](<https://devfeed.tech/tags/git-tags.md>), [github](<https://devfeed.tech/tags/github.md>), [npm](<https://devfeed.tech/tags/npm.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [packages](<https://devfeed.tech/tags/packages.md>), [releases](<https://devfeed.tech/tags/releases.md>), [script](<https://devfeed.tech/tags/script.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

A tutorial shows how to use an npm postpublish script to extract the package version from package.json, create a corresponding Git tag, and push the tag to a remote repository. It explains the Bash commands used for version extraction and automation.

### Source excerpt

TL;DR # If you just want to add git version tag after npm publish add this to your package.json: "postpublish" : "PACKAGE_VERSION=$(cat package.json | grep \\\"version\\\" | head -1 | awk -F: '{ print $2 }' | sed 's/[\",]//g' | tr -d '[[:space:]]') && git tag v$PACKAGE_VERSION && git push --tags", I advise you to read rest of the post to see what this code does. Because blindly coping code from the internet is probably not the smartest thing to do. Detailed explanation # I maintain couple of npm packages, and I wanted to add git tags for every version I publish to npm. It makes things easier to find, and GitHub lists all of them on "Releases" page. First thing to solve was to extract current version from package.json. I found a snippet on the internet and modified it slightly. This piece of bash code prints out versione.g. 1.0.0 or 0.1.15 from package.json. It looks complicated, but don't worry, I explained everything bellow. PACKAGE_VERSION=$(cat package.json \ | grep \"version\" \ | head -1 \ | awk -F: '{ print $2 }' \ | sed 's/[",]//g' \ | tr -d '[[:space:]]') echo $PACKAGE_VERSION I wasn't sure what certain lines do, so I did some researchAgain, I don't like blindly pasting code snippets I find on the internet. You should be careful with that. and here is code explained. # prints whole package json cat package.json # filters lines with "version" in them (can be multiple lines) grep \"version\" # pulls only the first line (leaves us with "version": "2.0.3",) head -1 # splits string by ":" and prints the second part (leaves us with "2.0.3",) awk -F: '{ print $2 }' # removes " and , (leaves us with 2.0.3) sed 's/[",]//g' # removes any leftover spaces and new lines tr -d '[[:space:]]' Add it to package.json # To automate this and add tag after every publish to npm, we'll use postpublish script. It is supported by npm, and it will be executed after every npm publish. Only thing left to do is to add tag and push it to origin. I added letter v in front of version numbe

## A Better package.json for the Frontend

DevFeed: [A Better package.json for the Frontend](<https://devfeed.tech/articles/a-better-package-json-for-the-frontend-31231.md>)

Original publisher: [Read original article](<https://nystudio107.com/blog/a-better-package-json-for-the-frontend>)

Author: andrew@nystudio107.com (Andrew Welch)

Published: 2016-12-23T19:46:00Z

Content type: tutorial

Language: en

Sources: [nystudio107](<https://devfeed.tech/sources/nystudio107-articles-on-modern-web-development.md>)

Topics: [Front end](<https://devfeed.tech/topics/frontend.md>), [Package Management](<https://devfeed.tech/topics/package-management.md>), [npm](<https://devfeed.tech/topics/npm.md>), [Yarn](<https://devfeed.tech/topics/yarn.md>), [Gulp](<https://devfeed.tech/topics/gulp.md>)

Tags: [better](<https://devfeed.tech/tags/better.md>), [consider](<https://devfeed.tech/tags/consider.md>), [days](<https://devfeed.tech/tags/days.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [frontend-development](<https://devfeed.tech/tags/frontend-development.md>), [gulp](<https://devfeed.tech/tags/gulp.md>), [here-s](<https://devfeed.tech/tags/here-s.md>), [insights](<https://devfeed.tech/tags/insights.md>), [like](<https://devfeed.tech/tags/like.md>), [mandatory](<https://devfeed.tech/tags/mandatory.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [npm](<https://devfeed.tech/tags/npm.md>), [npm-packages](<https://devfeed.tech/tags/npm-packages.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [setup](<https://devfeed.tech/tags/setup.md>), [tools](<https://devfeed.tech/tags/tools.md>), [webdev](<https://devfeed.tech/tags/webdev.md>), [webpack](<https://devfeed.tech/tags/webpack.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

This article explains how to use package.json as a centralized manifest for a website's frontend packages and workflow tooling. It discusses replacing Bower with npm, and notes that Yarn can manage the same registry with deterministic installs through yarn.lock.

### Source excerpt

Frontend workflow tools like gulp are almost mandatory for webdev these days; here's what I consider to be a better package.json setup

## Writing Command Line Tools with Node

DevFeed: [Writing Command Line Tools with Node](<https://devfeed.tech/articles/writing-command-line-tools-with-node-52525.md>)

Original publisher: [Read original article](<http://www.jackfranklin.co.uk/blog/node-command-line-tool/>)

Published: 2015-03-01T00:00:00Z

Content type: tutorial

Language: en

Sources: [Jack Franklin](<https://devfeed.tech/sources/jack-franklin.md>)

Topics: [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Node.js](<https://devfeed.tech/topics/node-js.md>), [npm](<https://devfeed.tech/topics/npm.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Package Management](<https://devfeed.tech/topics/package-management.md>), [Script](<https://devfeed.tech/topics/script.md>)

Tags: [cli](<https://devfeed.tech/tags/cli.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [commands](<https://devfeed.tech/tags/commands.md>), [node](<https://devfeed.tech/tags/node.md>), [npm](<https://devfeed.tech/tags/npm.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [run](<https://devfeed.tech/tags/run.md>)

### AI overview

A tutorial on building a Node.js command-line tool that searches directories for files matching a string. It covers project initialization, package.json configuration, npm linking, executable scripts, and command-line argument handling.

### Source excerpt

Back in August 2012 I wrote a post on building a command line tool in NodeJS. That post is now over two years old and plenty has changed, hence I thought it worth writing a new post building the same tool, showing how I'd do it now. We're going to build the same tool, one that's used to search a directory for files that match a given string. This is not a very useful plugin, but will let me demonstrate the basics of building a CLI in NodeJS. Creating the Project First things first: let's create a new project. Create a directory for the project, enter it and run npm init to initialise the new project with a package.json file. Answer the prompts if you wish, or just hit enter a bunch of times to get a template package.json file that you can fill out at your own leisure. Editing package.json The package.json file is used by npm, Node's package manager, to know about your project, its dependencies and how it works. We need to make a couple of edits to it. remove the main entry: this is only used for modules that will be used through the module system (e.g. var _ = require('underscore');). add preferGlobal and set it to true, which means if someone installs this module through npm and doesn't use the --global option, they will be warned that the module is designed to be installed globally. add the bin object, which maps commands to files. This means when this module is installed, npm will set up the filesearch executable to execute index.js. { "name": "filesearch", "version": "1.0.0", "description": "searches for files", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "JavaScript Playground", "license": "ISC", "preferGlobal": true, "bin": { "filesearch": "index.js" } } Creating the Script Create index.js and add this to the top: #! /usr/bin/env node console.log('This is the filesearch script.'); Installing the Script Now in your project you can run npm link to install the script on your system. This creates a symlink to your project so tha

## The Firefox OS Hello World

DevFeed: [The Firefox OS Hello World](<https://devfeed.tech/articles/the-firefox-os-hello-world-52479.md>)

Original publisher: [Read original article](<http://www.jackfranklin.co.uk/blog/firefoxos1/>)

Published: 2013-07-03T00:00:00Z

Content type: tutorial

Language: en

Sources: [Jack Franklin](<https://devfeed.tech/sources/jack-franklin.md>)

Topics: [Front end](<https://devfeed.tech/topics/frontend.md>), [Firefox](<https://devfeed.tech/topics/firefox.md>), [Web](<https://devfeed.tech/topics/web.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [css](<https://devfeed.tech/tags/css.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [html](<https://devfeed.tech/tags/html.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [jquery](<https://devfeed.tech/tags/jquery.md>), [json](<https://devfeed.tech/tags/json.md>), [manifest](<https://devfeed.tech/tags/manifest.md>), [node](<https://devfeed.tech/tags/node.md>), [npm](<https://devfeed.tech/tags/npm.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [simulator](<https://devfeed.tech/tags/simulator.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

A Firefox OS Hello World app can be built with HTML, CSS and JavaScript and tried in the Firefox OS simulator without a phone. The tutorial creates an index.html with an empty div, uses jQuery in app.js to insert "Hello World!", and adds a manifest.webapp whose launch_path points to index.html. In the simulator dashboard, add the directory containing the manifest to launch the app. Installing it on a Keon phone requires OS-specific setup, enabling remote debugging, connecting by USB, and using the Push icon; the tutorial points readers to MDN for setup instructions.

### Source excerpt

I recently got my hands on a Firefox OS preview device, a Keon and today I'm going to show you how to get a simple Hello World app running on the phone. Note that you don't need a phone to follow through - we will also use the Firefox OS simulator which can run on any machine (it's a Firefox browser plugin) and you can easily run your application through that. The phone is just the extra bonus bit at the end! To install the simulator just load up Firefox and head to the simulator download page. From there you can install it to Firefox OS. Hit the button on the left of the simulator dashboard to run the simulator and you should see the "device" appear: Now lets make an app. Apps are almost deceptively simple to create. It really is just HTML, CSS and JavaScript! As always, you can find all the code on Github. The first thing to do is create an index.html page. This just links to a couple of JS files, one of which is jQuery, and contains an empty div: Hello World! Create a js directory and grab the latest version of jQuery into it. Then create app.js and put this within: $(function() { $("div").text("Hello World!"); }); When the app loads we should see the text "Hello World" appear in the empty div. Finally, we need to create a manifest.webapp file. This is similar to how package.json works with Node and npm apps in that it tells the system about the app and how to run it. Inside the application manifest goes some simple JSON: { "name": "Hello World", "description": "Jack's test Hello World app", "version": "1.0", "launch_path": "/index.html", "developer": { "name": "Jack Franklin", "url": "http://jackfranklin.co.uk" } } The main property there to note is launch_path. This is the file that the app will load up first when it is run by the user. Now we have our app, we can try running it through the simulator. On the simulator dashboard, click the "Add Directory" button and then navigate to the folder which contains the manifest file. Double click on that manifest file

## Making your library AMD compliant

DevFeed: [Making your library AMD compliant](<https://devfeed.tech/articles/making-your-library-amd-compliant-52517.md>)

Original publisher: [Read original article](<http://www.jackfranklin.co.uk/blog/making-your-library-amd-compliant/>)

Published: 2012-10-15T00:00:00Z

Content type: tutorial

Language: en

Sources: [Jack Franklin](<https://devfeed.tech/sources/jack-franklin.md>)

Topics: [Library](<https://devfeed.tech/topics/library.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [CommonJS](<https://devfeed.tech/topics/commonjs.md>)

Tags: [amd](<https://devfeed.tech/tags/amd.md>), [define](<https://devfeed.tech/tags/define.md>), [function](<https://devfeed.tech/tags/function.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [library](<https://devfeed.tech/tags/library.md>), [module](<https://devfeed.tech/tags/module.md>), [package](<https://devfeed.tech/tags/package.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [package-management](<https://devfeed.tech/tags/package-management.md>)

### AI overview

To make a JavaScript library usable as an AMD module and publish it with Jam, expose its API globally, then conditionally register it with `window.define` when `window.define.amd` is present. The example returns the existing `window.responsiveImage` function from a named `responsiveImages` module; it uses `window.define` because the code is wrapped in an anonymous function. Add a `package.json` with package metadata and a `main` entry when the file is not named `main.js`, sign up with Jam, and run `jam publish`. In a Jam-enabled project, install the package with `jam install`, add it to the RequireJS dependency list, and use the returned value in the callback. To publish an update, commit changes, increase the package version, and publish again.

### Source excerpt

Previously on this blog I've written about an AMD approach with Require.js and about package management with Jam JS. Jam uses Require.js so what I thought would be a nice way to tie these two posts together would be to write on how to make your JS library AMD compliant and how to publish it with Jam, for use in other projects. The project I'm using is actually written in CoffeeScript, but it's so similar to JavaScript in this instance that it shouldn't be an issue. I've also included the same code in JavaScript, if CoffeeScript isn't your thing. I discussed how to define a module in the previous RequireJS tutorial linked above, so if you're not sure how to do things, please read that and then return here. The way to define something is simple - check if window.define exists, and if it does, use it to define our module. To define a module we need to pass it a function that simply returns what we want a user of our library to access. Sometimes that's just one method, or it might be an object of multiple methods. In my case, using my little Responsive Images script, I just needed to expose the function responsiveImage, which I had already attached onto the window object at this stage. In CoffeeScript, it's written like so: #expose globally window.responsiveImage = responsiveImages # support AMD if typeof window.define is "function" && window.define.amd window.define "responsiveImages", [], -> window.responsiveImage If I were to write that in JavaScript, it would be: window.responsiveImage = responsiveImages; if (typeof window.define === "function" && window.define.amd) { window.define("responsiveImages", [], function() { return window.responsiveImage; }); } Note that I use window.define rather than define because all my code is wrapped within an anonymous function, so I don't have access to the global scope through this. The next thing to do is to create a package.json file so Jam knows about our package and how to run it. For my project, it looks like this: { "name":

## Node.js: A Todo App with Express

DevFeed: [Node.js: A Todo App with Express](<https://devfeed.tech/articles/node-js-a-todo-app-with-express-52527.md>)

Original publisher: [Read original article](<http://www.jackfranklin.co.uk/blog/node-js-a-todo-app-with-express/>)

Published: 2012-04-30T00:00:00Z

Content type: tutorial

Language: en

Sources: [Jack Franklin](<https://devfeed.tech/sources/jack-franklin.md>)

Topics: [Express](<https://devfeed.tech/topics/express.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [npm](<https://devfeed.tech/topics/npm.md>), [Test-driven development](<https://devfeed.tech/topics/tdd.md>), [Software Testing](<https://devfeed.tech/topics/software-testing.md>), [To-Do](<https://devfeed.tech/topics/todo.md>)

Tags: [css](<https://devfeed.tech/tags/css.md>), [express](<https://devfeed.tech/tags/express.md>), [first](<https://devfeed.tech/tags/first.md>), [framework](<https://devfeed.tech/tags/framework.md>), [generate](<https://devfeed.tech/tags/generate.md>), [http](<https://devfeed.tech/tags/http.md>), [json](<https://devfeed.tech/tags/json.md>), [localhost](<https://devfeed.tech/tags/localhost.md>), [node](<https://devfeed.tech/tags/node.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [npm](<https://devfeed.tech/tags/npm.md>), [package-json](<https://devfeed.tech/tags/package-json.md>), [run](<https://devfeed.tech/tags/run.md>), [simple](<https://devfeed.tech/tags/simple.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>), [using](<https://devfeed.tech/tags/using.md>), [world](<https://devfeed.tech/tags/world.md>)

### AI overview

The excerpt walks through generating a basic Express app with the `express` command, installing its dependencies, and starting it with `node app.js`. Because `npm start` expects a `server.js` entry by default in this setup, it shows adding a `start` script for `app.js` or renaming the file. It explains Jade templates, route handlers, rendering views with variables, and adding an `/about` route. `nodemon` can restart the server when files change; Jade templates compile on request and do not require a server restart. The piece assumes basic Node.js, NPM, and Express knowledge, and postpones building the Todo features and unit testing to later installments.

### Source excerpt

So last time we installed Node & did the traditional "Hello World" example with Node & then using the Express framework. Today we're going to make a simple app using Express from the beginning. We will generate the app with Express & then explore Express further, including Unit testing. This will most likely be a multi-part tutorial. The app we're building is a very simple "To Do" application. I know it's boring, but it's simple enough that we can focus on Express & Node rather than the implementation of the app. The first thing to do is install Express globally: npm install express -g I am presuming here basic knowledge of Node, NPM & Express. If you're not familiar, you might be best off reading my tutorial from last week before continuing. Installing Express globally will give us the express command in our command line & we can use this to generate our new app: express new JSPlaygroundToDo You should see something like this: -> express new JSPlaygroundToDo create : JSPlaygroundToDo create : JSPlaygroundToDo/package.json create : JSPlaygroundToDo/app.js create : JSPlaygroundToDo/public create : JSPlaygroundToDo/public/javascripts create : JSPlaygroundToDo/public/images create : JSPlaygroundToDo/public/stylesheets create : JSPlaygroundToDo/public/stylesheets/style.css create : JSPlaygroundToDo/routes create : JSPlaygroundToDo/routes/index.js create : JSPlaygroundToDo/views create : JSPlaygroundToDo/views/layout.jade create : JSPlaygroundToDo/views/index.jade dont forget to install dependencies: $ cd JSPlaygroundToDo && npm install Express has set up the basic skeleton of our application for us. Lets make sure we've got all the dependencies, so cd into the folder & run npm install. This will check every package in package.json is indeed installed. Once that's done, lets just run it & see what we have. In the command line type node app.js to run the app, and then head to http://localhost:3000. You should, if everything's working, see this: One thing that confused me h