Symlinking gulpfile但是从中获取路径符号链接

时间:2016-03-28 16:01:53

标签: node.js gulp symlink

如果这看起来很明显,我很抱歉,但我对Node很新,我无法找到解决方案。

目前,我正在开发一个项目,我们在存储库中有多个站点,并且都需要使用gulp构建。构建每个站点的过程基本相同,因此我们希望将gulpfile.js移出每个站点的子目录,并将其移动到repo的根目录中,并将其符号链接到每个子目录中。这使我们无需维护多个gulp文件并需要重复的node_modules。

运行安装脚本以对gulp文件进行符号链接并在克隆之后运行npm install,除了一个小问题外,它很有效;我们需要在每个站点的目录中引用package.json文件,以获取其名称,版本等作为一些gulp任务的一部分。当我对gulpfile进行符号链接时,var pkg = require('./package.json')总是解析为repo根目录下的package.json,而不是从符号链接调用的位置(这是有道理的,但不是我需要的)。

如何为gulpfile维护此符号链接结构,但让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/

1 个答案:

答案 0 :(得分:2)

默认情况下,Gulp将当前工作目录更改为Gulpfile所在的目录(在您的情况下是符号链接),因此以下内容应该有效:

var path = require('path');

var packageJson = require(path.join(process.cwd(), 'package.json'));