如何创建(初始化)JS开发环境

创建一个基本的 JavaScript 开发环境,以满足两个要求:

  • 使用 ES6(或最新的 ECMAScript 版本)语法特性
  • 支持单元测试
  1. 需要系统中已安装了 Node.js。以能够在本地运行 JavaScript 代码,以及可以使用 npm 安装和管理开发依赖项。
    可访问 https://nodejs.org/ 官网,参照指示安装 Node.js
mkdir my-js-project
cd my-js-project
npm init -y

这会创建一个 package.json 文件,通过此跟踪项目的依赖、以及相关开发环境的配置。

使用 Babel 来转译 ES6 代码,安装 Babel CLI 和 Babel 预设环境包

npm install --save-dev @babel/core @babel/cli @babel/preset-env

在 package.json 中添加 Babel 配置

"babel": { "presets": ["@babel/preset-env"] }

在 package.json 文件中的 scripts 字段添加编译命令:

"scripts": {
 "build": "npx babel src --out-dir dist"
}

使用 ESLint 来检查语法错误和格式化代码,保持代码风格一致。

安装命令:

npm install --save-dev eslint

初始化 ESLint 配置文件:

npx eslint --init

根据提示选择配置选项,例如:

  • 如何使用 ESLint? 选择 “To check syntax, find problems”
  • 使用的模块系统?选择 “JavaScript modules (import/export)”
  • 使用的框架?选择 “None of these”
  • 代码运行在哪里?选择 “Browser”

根据自身项目需求选择配置选项。

使用 Jest 框架。安装命令:

npm install --save-dev jest

在 package.json 文件中的 scripts 字段添加测试命令:

"scripts": {
 "test": "jest",
}
  • (可选)创建示例代码并执行测试
cd my-js-project

# 创建 src 目录
mkdir src
# 创建一个JavaScript文件,例如app.js
touch src/app.js

# 创建 test 目录
mkdir test
# 创建单元测试文件,例如app.test.js
touch test/app.test.js

app.js 文件内容:

export const sum = (a, b) => a + b;

app.test.js 文件内容:

import { expect, test } from "@jest/globals";

import { sum } from "../src/app";

test("adds 1 + 2 to equal 3", () => {
    expect(sum(1, 2)).toBe(3);
});

运行测试

npm run test
my-js-project/
├── package.json
├── src/
│   └── app.js
├── test/
│   └── app.test.js

package.json 文件内容:

{
  "name": "my-js-project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
    "scripts": {
        "test": "jest",
        "build": "npx babel src --out-dir dist"
    },
    "author": "",
    "license": "ISC",
    "description": "",
    "babel": {
        "presets": [
            "@babel/preset-env"
        ]
    },
    "devDependencies": {
        "@babel/cli": "^7.24.7",
        "@babel/core": "^7.24.7",
        "@babel/preset-env": "^7.24.7",
        "@eslint/js": "^9.6.0",
        "eslint": "^9.6.0",
        "globals": "^15.7.0",
        "jest": "^29.7.0"
    }
}

app.js 文件内容:

const sum = (a, b) => a + b;
module.exports = sum;

app.test.js 文件内容:

const sum = require("../src/app");
test("adds 1 + 2 to equal 3", () => {
    expect(sum(1, 2)).toBe(3);
});