You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中如何让scoped作用域包无需安装即可从本地路径导入?

实现本地@company域包优先加载的3种可行方案

方案1:package.json workspaces(monorepo场景首选)

如果你的项目是多包共存的monorepo结构,用包管理器原生的workspaces功能即可实现自动关联:

  • 在项目根目录的package.json中添加workspaces配置:
{
  "workspaces": [
    "./company/*"
  ]
}
  • 执行npm install / yarn install / pnpm install,包管理器会自动将@company/开头的包映射到你本地的company/目录下对应模块,导入时优先走本地代码,修改后实时生效无需重新安装。

方案2:配置路径别名(适配所有场景)

根据你使用的运行环境,直接配置模块解析的别名映射即可:

Node.js原生运行(v14.18.0+ / v16.0.0+ 支持)

在项目根package.json中添加imports字段做全局映射:

{
  "imports": {
    "@company/*": "./company/*"
  }
}

低版本Node.js可以在启动时指定NODE_PATH环境变量:

# Linux/macOS
NODE_PATH=./ node your-entry-file.js
# Windows cmd
set NODE_PATH=./ && node your-entry-file.js

构建工具场景(Vite/Webpack/Rollup等)

修改对应构建工具配置文件的resolve.alias配置:

  • Vite 示例(vite.config.js):
import { defineConfig } from 'vite'
import path from 'path'

export default defineConfig({
  resolve: {
    alias: {
      '@company': path.resolve(__dirname, 'company')
    }
  }
})
  • Webpack 示例(webpack.config.js):
const path = require('path')

module.exports = {
  resolve: {
    alias: {
      '@company': path.resolve(__dirname, 'company')
    }
  }
}

如果你不想改动任何项目配置,直接用npm自带的link功能做软链接关联即可:

  1. 分别进入每个本地模块的根目录(module1、module2目录),执行npm link
  2. 回到你的主项目根目录,执行npm link @company/module1 @company/module2
    执行完成后,主项目node_modules下的@company/xxx包会直接指向你的本地模块目录,修改代码后实时生效。

注意:如果之前已经安装过线上版本的@company/xxx包,配置完成后建议先删除node_modules目录和包锁文件(package-lock.json/yarn.lock/pnpm-lock.yaml)重新执行安装,避免缓存导致解析仍然走线上安装的版本。

内容的提问来源于stack exchange,提问作者Bang Dao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:06:05