符号链接一个 gulpfile 但从中获取路径符号链接 运行
Symlinking a gulpfile but getting path symlink ran from
如果这看起来很明显,我深表歉意,但我是 Node 的新手,我找不到解决这个问题的方法。
目前我正在做一个项目,我们在存储库中有多个站点,它们都需要用 gulp 构建。构建每个站点的过程本质上是相同的,因此我们希望将 gulpfile.js
从每个站点的子目录中移出并移至存储库的根目录中,并将其符号链接到每个子目录中。这使我们无需维护多个 gulp 文件和重复 node_modules。
运行 用于符号链接 gulp 文件和 运行 npm install
的安装脚本在克隆后效果很好,除了一个小问题;作为某些 gulp 任务的一部分,我们需要引用每个站点目录中的 package.json
文件以获取其名称、版本等。当我对 gulp 文件进行符号链接时,var pkg = require('./package.json')
总是解析为 repo 根目录下的 package.json
,而不是从调用符号链接的位置(这是有道理的,但我不是需要)。
如何维护 gulp 文件的符号链接结构,但 require('./package.json')
决定说 ./Site_1/package.json
而不是 ./package.json
.
├── Site_1
│ ├── README.md
│ ├── config.yml
│ ├── dist
│ ├── gulpfile.js -> ../gulpfile.js
│ ├── package.json
│ └── src
├── Site_2
│ ├── README.md
│ ├── config.yml
│ ├── dist
│ ├── gulpfile.js -> ../gulpfile.js
│ ├── package.json
│ └── src
├── package.json
├── gulpfile.js
├── node_modules/
默认情况下 Gulp 将当前工作目录更改为 Gulp 文件所在的目录(在您的情况下是符号链接),因此以下内容应该有效:
var path = require('path');
var packageJson = require(path.join(process.cwd(), 'package.json'));
如果这看起来很明显,我深表歉意,但我是 Node 的新手,我找不到解决这个问题的方法。
目前我正在做一个项目,我们在存储库中有多个站点,它们都需要用 gulp 构建。构建每个站点的过程本质上是相同的,因此我们希望将 gulpfile.js
从每个站点的子目录中移出并移至存储库的根目录中,并将其符号链接到每个子目录中。这使我们无需维护多个 gulp 文件和重复 node_modules。
运行 用于符号链接 gulp 文件和 运行 npm install
的安装脚本在克隆后效果很好,除了一个小问题;作为某些 gulp 任务的一部分,我们需要引用每个站点目录中的 package.json
文件以获取其名称、版本等。当我对 gulp 文件进行符号链接时,var pkg = require('./package.json')
总是解析为 repo 根目录下的 package.json
,而不是从调用符号链接的位置(这是有道理的,但我不是需要)。
如何维护 gulp 文件的符号链接结构,但 require('./package.json')
决定说 ./Site_1/package.json
而不是 ./package.json
.
├── Site_1
│ ├── README.md
│ ├── config.yml
│ ├── dist
│ ├── gulpfile.js -> ../gulpfile.js
│ ├── package.json
│ └── src
├── Site_2
│ ├── README.md
│ ├── config.yml
│ ├── dist
│ ├── gulpfile.js -> ../gulpfile.js
│ ├── package.json
│ └── src
├── package.json
├── gulpfile.js
├── node_modules/
默认情况下 Gulp 将当前工作目录更改为 Gulp 文件所在的目录(在您的情况下是符号链接),因此以下内容应该有效:
var path = require('path');
var packageJson = require(path.join(process.cwd(), 'package.json'));