node.js - 如何使用 TypeScript 在输出目录中包含 node_modules

标签 node.js typescript npm visual-studio-code

我想知道是否可以在运行 tsc 命令后将 node_modules 文件夹复制到输出目录。

我的情况是我有一个带有 TypeScript 的项目并使用了一些 npm 包。我需要我的输出目录具有所有 npm 依赖项,因为我需要压缩它并通过 http 发送(到 AWS Lambda)。

我的项目结构是这样的:

|-.vscode --> visual studio code
|-lib --> output dir
|-node_modules --> npm dependencies
|-src --> .ts files
|-jsconfig.json
|-tsconfig.json

如何实现?

非常感谢!

最佳答案

我喜欢Peopleware's解决方案比公认的解决方案多得多,但您甚至不需要为此大吃一惊。您可以在 package.json 中简单地执行此操作:

{
  "scripts": {
    "build": "tsc <your command line options>",
    "postbuild": "cp package.json dist/package.json && cd dist && npm install --only=production"
  }
}

这样做的好处是您不会复制整个 node_modules 文件夹,因为它可能有大量仅在开发期间使用的依赖项。

您可以对静态 Assets (例如图像)执行相同的操作,或者不使用:

"copy-statics": "cp -r static dist/static"

更新:与其使用 npm install --only-production,不如复制 package.json package-lock.json 然后运行 ​​npm ci --production。这可确保您只安装 package-lock.json 中的依赖快照。所以命令看起来像这样:

"postbuild": "cp package*.json dist && cd dist && npm ci --production"

关于node.js - 如何使用 TypeScript 在输出目录中包含 node_modules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41109461/

相关文章:

node.js - 错误: Cannot find module './algs'

javascript - 私有(private) NPM : How can the latest version of a module be installed?

node.js - NPM install -g cordova ionic 给出 Err -13

node.js - 使用 NodeJs 异步查询 redshift 集群

node.js - socket.io.js 返回 404

javascript - 在微服务之间共享代码——在这种情况下是否合理?

reactjs - 如何用 jest 和 typescript 测试一个基本的 react 功能组件

javascript - Await 仅在 nodejs 的异步函数中有效

javascript - 嵌套对象: Update all attributes with same names

node.js - 不再能够在 Angular 4.2.3 中导入 BrowserAnimationsModule