just-scripts 1.8.1 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.json CHANGED
@@ -2,7 +2,52 @@
2
2
  "name": "just-scripts",
3
3
  "entries": [
4
4
  {
5
- "date": "Thu, 31 Mar 2022 17:04:25 GMT",
5
+ "date": "Thu, 18 Aug 2022 16:10:27 GMT",
6
+ "tag": "just-scripts_v2.0.1",
7
+ "version": "2.0.1",
8
+ "comments": {
9
+ "patch": [
10
+ {
11
+ "author": "1581488+christiango@users.noreply.github.com",
12
+ "package": "just-scripts",
13
+ "comment": "Add more configuration options for the eslint task",
14
+ "commit": "70ec9554f55db0c96fd0b89dd61a2f205936e029"
15
+ }
16
+ ]
17
+ }
18
+ },
19
+ {
20
+ "date": "Mon, 16 May 2022 20:50:34 GMT",
21
+ "tag": "just-scripts_v2.0.0",
22
+ "version": "2.0.0",
23
+ "comments": {
24
+ "major": [
25
+ {
26
+ "author": "benw@microsoft.com",
27
+ "package": "just-scripts",
28
+ "comment": "Add support for symlink creation in the copy task",
29
+ "commit": "02e45b2c092548c4ac43e142aaa510a7ad95ec49"
30
+ }
31
+ ]
32
+ }
33
+ },
34
+ {
35
+ "date": "Tue, 05 Apr 2022 20:55:43 GMT",
36
+ "tag": "just-scripts_v1.8.2",
37
+ "version": "1.8.2",
38
+ "comments": {
39
+ "patch": [
40
+ {
41
+ "author": "tristan.watanabe@gmail.com",
42
+ "package": "just-scripts",
43
+ "comment": "Add support for dart-sass",
44
+ "commit": "365c671c3228d59c8861fe249cc132e4b51faf57"
45
+ }
46
+ ]
47
+ }
48
+ },
49
+ {
50
+ "date": "Thu, 31 Mar 2022 17:04:30 GMT",
6
51
  "tag": "just-scripts_v1.8.1",
7
52
  "version": "1.8.1",
8
53
  "comments": {
package/CHANGELOG.md CHANGED
@@ -1,12 +1,36 @@
1
1
  # Change Log - just-scripts
2
2
 
3
- This log was last generated on Thu, 31 Mar 2022 17:04:25 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 18 Aug 2022 16:10:27 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 2.0.1
8
+
9
+ Thu, 18 Aug 2022 16:10:27 GMT
10
+
11
+ ### Patches
12
+
13
+ - Add more configuration options for the eslint task (1581488+christiango@users.noreply.github.com)
14
+
15
+ ## 2.0.0
16
+
17
+ Mon, 16 May 2022 20:50:34 GMT
18
+
19
+ ### Major changes
20
+
21
+ - Add support for symlink creation in the copy task (benw@microsoft.com)
22
+
23
+ ## 1.8.2
24
+
25
+ Tue, 05 Apr 2022 20:55:43 GMT
26
+
27
+ ### Patches
28
+
29
+ - Add support for dart-sass (tristan.watanabe@gmail.com)
30
+
7
31
  ## 1.8.1
8
32
 
9
- Thu, 31 Mar 2022 17:04:25 GMT
33
+ Thu, 31 Mar 2022 17:04:30 GMT
10
34
 
11
35
  ### Patches
12
36
 
@@ -8,6 +8,12 @@ export interface CopyInstruction {
8
8
  * The path+filename of the destination file.
9
9
  */
10
10
  destinationFilePath: string;
11
+ /**
12
+ * Set to true if a copy or merge should be performed, false if a symlink should be created.
13
+ * If multiple source files are specified (i.e. a merge), this must be true or undefined.
14
+ * The default value of undefined is equivalent to true for a merge, false in all other cases.
15
+ */
16
+ noSymlink?: boolean;
11
17
  }
12
18
  export interface CopyConfig {
13
19
  copyInstructions: CopyInstruction[];
@@ -17,13 +23,13 @@ export interface CopyConfig {
17
23
  * For example copyFilesToDestinationDirectory(['some/path/foo.js', 'bar.js'], 'dest/target') would result in the creation of
18
24
  * files 'dest/target/foo.js' and 'dest/target/bar.js'.
19
25
  */
20
- export declare function copyFilesToDestinationDirectory(sourceFilePaths: string | string[], destinationDirectory: string): CopyInstruction[];
26
+ export declare function copyFilesToDestinationDirectory(sourceFilePaths: string | string[], destinationDirectory: string, noSymlinks?: boolean): CopyInstruction[];
21
27
  /**
22
28
  * Copies a file into a destination directory with a different name.
23
29
  * For example copyFileToDestinationDirectoryWithRename('some/path/foo.js', 'bar.js', 'dest/target') would result in the creation of
24
30
  * the file 'dest/target/bar.js'.
25
31
  */
26
- export declare function copyFileToDestinationDirectoryWithRename(sourceFilePath: string, destinationName: string, destinationDirectory: string): CopyInstruction[];
32
+ export declare function copyFileToDestinationDirectoryWithRename(sourceFilePath: string, destinationName: string, destinationDirectory: string, noSymlink?: boolean): CopyInstruction[];
27
33
  /**
28
34
  * Copies files into a destination directory with different names.
29
35
  * For example copyFilesToDestinationDirectoryWithRename([{sourceFilePath:'some/path/foo.js', destinationName:'bar.js'}], 'dest/target')
@@ -32,12 +38,12 @@ export declare function copyFileToDestinationDirectoryWithRename(sourceFilePath:
32
38
  export declare function copyFilesToDestinationDirectoryWithRename(instrs: {
33
39
  sourceFilePath: string;
34
40
  destinationName: string;
35
- }[], destinationDirectory: string): CopyInstruction[];
41
+ }[], destinationDirectory: string, noSymlinks?: boolean): CopyInstruction[];
36
42
  /**
37
43
  * Copies all the files in a directory to the output folder.
38
44
  * You can optionally provide a filter function that determines which files to copy.
39
45
  */
40
- export declare function copyFilesInDirectory(sourceDirectoryPath: string, outputDirectoryPath: string, filterFunction?: (file: string) => boolean): CopyInstruction[];
46
+ export declare function copyFilesInDirectory(sourceDirectoryPath: string, outputDirectoryPath: string, filterFunction?: (file: string) => boolean, noSymlinks?: boolean): CopyInstruction[];
41
47
  /**
42
48
  * Merges the contents of multiple files and places them in the output folder.
43
49
  * This should only be used for text files and it should not be used for JavaScript
@@ -1 +1 @@
1
- {"version":3,"file":"CopyInstruction.d.ts","sourceRoot":"","sources":["../../src/copy/CopyInstruction.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAElC;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,eAAe,EAAE,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,oBAAoB,EAAE,MAAM,GAAG,eAAe,EAAE,CAKnI;AAED;;;;GAIG;AACH,wBAAgB,wCAAwC,CACtD,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,oBAAoB,EAAE,MAAM,GAC3B,eAAe,EAAE,CAEnB;AAED;;;;GAIG;AACH,wBAAgB,yCAAyC,CACvD,MAAM,EAAE;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,EAAE,EAC7D,oBAAoB,EAAE,MAAM,GAC3B,eAAe,EAAE,CAKnB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,mBAAmB,EAAE,MAAM,EAC3B,mBAAmB,EAAE,MAAM,EAC3B,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GACzC,eAAe,EAAE,CAUnB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,mBAAmB,EAAE,MAAM,GAAG,eAAe,CAKlG"}
1
+ {"version":3,"file":"CopyInstruction.d.ts","sourceRoot":"","sources":["../../src/copy/CopyInstruction.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAElC;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,eAAe,EAAE,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,EAClC,oBAAoB,EAAE,MAAM,EAC5B,UAAU,CAAC,EAAE,OAAO,GACnB,eAAe,EAAE,CAMnB;AAED;;;;GAIG;AACH,wBAAgB,wCAAwC,CACtD,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,oBAAoB,EAAE,MAAM,EAC5B,SAAS,CAAC,EAAE,OAAO,GAClB,eAAe,EAAE,CAEnB;AAED;;;;GAIG;AACH,wBAAgB,yCAAyC,CACvD,MAAM,EAAE;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,EAAE,EAC7D,oBAAoB,EAAE,MAAM,EAC5B,UAAU,CAAC,EAAE,OAAO,GACnB,eAAe,EAAE,CAMnB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,mBAAmB,EAAE,MAAM,EAC3B,mBAAmB,EAAE,MAAM,EAC3B,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,EAC1C,UAAU,CAAC,EAAE,OAAO,GACnB,eAAe,EAAE,CAWnB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,mBAAmB,EAAE,MAAM,GAAG,eAAe,CAKlG"}
@@ -9,10 +9,11 @@ const arrayify_1 = require("../arrayUtils/arrayify");
9
9
  * For example copyFilesToDestinationDirectory(['some/path/foo.js', 'bar.js'], 'dest/target') would result in the creation of
10
10
  * files 'dest/target/foo.js' and 'dest/target/bar.js'.
11
11
  */
12
- function copyFilesToDestinationDirectory(sourceFilePaths, destinationDirectory) {
12
+ function copyFilesToDestinationDirectory(sourceFilePaths, destinationDirectory, noSymlinks) {
13
13
  return arrayify_1.arrayify(sourceFilePaths).map(sourceName => ({
14
14
  sourceFilePath: path_1.normalize(sourceName),
15
15
  destinationFilePath: path_1.join(destinationDirectory, path_1.basename(sourceName)),
16
+ noSymlink: noSymlinks,
16
17
  }));
17
18
  }
18
19
  exports.copyFilesToDestinationDirectory = copyFilesToDestinationDirectory;
@@ -21,8 +22,8 @@ exports.copyFilesToDestinationDirectory = copyFilesToDestinationDirectory;
21
22
  * For example copyFileToDestinationDirectoryWithRename('some/path/foo.js', 'bar.js', 'dest/target') would result in the creation of
22
23
  * the file 'dest/target/bar.js'.
23
24
  */
24
- function copyFileToDestinationDirectoryWithRename(sourceFilePath, destinationName, destinationDirectory) {
25
- return [{ sourceFilePath, destinationFilePath: path_1.join(destinationDirectory, destinationName) }];
25
+ function copyFileToDestinationDirectoryWithRename(sourceFilePath, destinationName, destinationDirectory, noSymlink) {
26
+ return [{ sourceFilePath, destinationFilePath: path_1.join(destinationDirectory, destinationName), noSymlink }];
26
27
  }
27
28
  exports.copyFileToDestinationDirectoryWithRename = copyFileToDestinationDirectoryWithRename;
28
29
  /**
@@ -30,10 +31,11 @@ exports.copyFileToDestinationDirectoryWithRename = copyFileToDestinationDirector
30
31
  * For example copyFilesToDestinationDirectoryWithRename([{sourceFilePath:'some/path/foo.js', destinationName:'bar.js'}], 'dest/target')
31
32
  * would result in the creation of the file 'dest/target/bar.js'.
32
33
  */
33
- function copyFilesToDestinationDirectoryWithRename(instrs, destinationDirectory) {
34
+ function copyFilesToDestinationDirectoryWithRename(instrs, destinationDirectory, noSymlinks) {
34
35
  return instrs.map(instr => ({
35
36
  sourceFilePath: instr.sourceFilePath,
36
37
  destinationFilePath: path_1.join(destinationDirectory, instr.destinationName),
38
+ noSymlink: noSymlinks,
37
39
  }));
38
40
  }
39
41
  exports.copyFilesToDestinationDirectoryWithRename = copyFilesToDestinationDirectoryWithRename;
@@ -41,7 +43,7 @@ exports.copyFilesToDestinationDirectoryWithRename = copyFilesToDestinationDirect
41
43
  * Copies all the files in a directory to the output folder.
42
44
  * You can optionally provide a filter function that determines which files to copy.
43
45
  */
44
- function copyFilesInDirectory(sourceDirectoryPath, outputDirectoryPath, filterFunction) {
46
+ function copyFilesInDirectory(sourceDirectoryPath, outputDirectoryPath, filterFunction, noSymlinks) {
45
47
  let files = fs_1.readdirSync(sourceDirectoryPath);
46
48
  if (filterFunction) {
47
49
  files = files.filter(filterFunction);
@@ -49,6 +51,7 @@ function copyFilesInDirectory(sourceDirectoryPath, outputDirectoryPath, filterFu
49
51
  return files.map(file => ({
50
52
  sourceFilePath: path_1.join(sourceDirectoryPath, file),
51
53
  destinationFilePath: path_1.join(outputDirectoryPath, file),
54
+ noSymlink: noSymlinks,
52
55
  }));
53
56
  }
54
57
  exports.copyFilesInDirectory = copyFilesInDirectory;
@@ -1 +1 @@
1
- {"version":3,"file":"CopyInstruction.js","sourceRoot":"","sources":["../../src/copy/CopyInstruction.ts"],"names":[],"mappings":";;;AAAA,+BAAiD;AACjD,2BAAiC;AACjC,qDAAkD;AAmBlD;;;;GAIG;AACH,SAAgB,+BAA+B,CAAC,eAAkC,EAAE,oBAA4B;IAC9G,OAAO,mBAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAClD,cAAc,EAAE,gBAAS,CAAC,UAAU,CAAC;QACrC,mBAAmB,EAAE,WAAI,CAAC,oBAAoB,EAAE,eAAQ,CAAC,UAAU,CAAC,CAAC;KACtE,CAAC,CAAC,CAAC;AACN,CAAC;AALD,0EAKC;AAED;;;;GAIG;AACH,SAAgB,wCAAwC,CACtD,cAAsB,EACtB,eAAuB,EACvB,oBAA4B;IAE5B,OAAO,CAAC,EAAE,cAAc,EAAE,mBAAmB,EAAE,WAAI,CAAC,oBAAoB,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;AAChG,CAAC;AAND,4FAMC;AAED;;;;GAIG;AACH,SAAgB,yCAAyC,CACvD,MAA6D,EAC7D,oBAA4B;IAE5B,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,mBAAmB,EAAE,WAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,eAAe,CAAC;KACvE,CAAC,CAAC,CAAC;AACN,CAAC;AARD,8FAQC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAClC,mBAA2B,EAC3B,mBAA2B,EAC3B,cAA0C;IAE1C,IAAI,KAAK,GAAG,gBAAW,CAAC,mBAAmB,CAAC,CAAC;IAE7C,IAAI,cAAc,EAAE;QAClB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;KACtC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,cAAc,EAAE,WAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC;QAC/C,mBAAmB,EAAE,WAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC;KACrD,CAAC,CAAC,CAAC;AACN,CAAC;AAdD,oDAcC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,eAAyB,EAAE,mBAA2B;IAC/E,OAAO;QACL,cAAc,EAAE,eAAe;QAC/B,mBAAmB;KACpB,CAAC;AACJ,CAAC;AALD,gCAKC"}
1
+ {"version":3,"file":"CopyInstruction.js","sourceRoot":"","sources":["../../src/copy/CopyInstruction.ts"],"names":[],"mappings":";;;AAAA,+BAAiD;AACjD,2BAAiC;AACjC,qDAAkD;AA0BlD;;;;GAIG;AACH,SAAgB,+BAA+B,CAC7C,eAAkC,EAClC,oBAA4B,EAC5B,UAAoB;IAEpB,OAAO,mBAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAClD,cAAc,EAAE,gBAAS,CAAC,UAAU,CAAC;QACrC,mBAAmB,EAAE,WAAI,CAAC,oBAAoB,EAAE,eAAQ,CAAC,UAAU,CAAC,CAAC;QACrE,SAAS,EAAE,UAAU;KACtB,CAAC,CAAC,CAAC;AACN,CAAC;AAVD,0EAUC;AAED;;;;GAIG;AACH,SAAgB,wCAAwC,CACtD,cAAsB,EACtB,eAAuB,EACvB,oBAA4B,EAC5B,SAAmB;IAEnB,OAAO,CAAC,EAAE,cAAc,EAAE,mBAAmB,EAAE,WAAI,CAAC,oBAAoB,EAAE,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;AAC3G,CAAC;AAPD,4FAOC;AAED;;;;GAIG;AACH,SAAgB,yCAAyC,CACvD,MAA6D,EAC7D,oBAA4B,EAC5B,UAAoB;IAEpB,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,mBAAmB,EAAE,WAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,eAAe,CAAC;QACtE,SAAS,EAAE,UAAU;KACtB,CAAC,CAAC,CAAC;AACN,CAAC;AAVD,8FAUC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAClC,mBAA2B,EAC3B,mBAA2B,EAC3B,cAA0C,EAC1C,UAAoB;IAEpB,IAAI,KAAK,GAAG,gBAAW,CAAC,mBAAmB,CAAC,CAAC;IAE7C,IAAI,cAAc,EAAE;QAClB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;KACtC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,cAAc,EAAE,WAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC;QAC/C,mBAAmB,EAAE,WAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC;QACpD,SAAS,EAAE,UAAU;KACtB,CAAC,CAAC,CAAC;AACN,CAAC;AAhBD,oDAgBC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,eAAyB,EAAE,mBAA2B;IAC/E,OAAO;QACL,cAAc,EAAE,eAAe;QAC/B,mBAAmB;KACpB,CAAC;AACJ,CAAC;AALD,gCAKC"}
@@ -1 +1 @@
1
- {"version":3,"file":"executeCopyInstructions.d.ts","sourceRoot":"","sources":["../../src/copy/executeCopyInstructions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIhE;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3F"}
1
+ {"version":3,"file":"executeCopyInstructions.d.ts","sourceRoot":"","sources":["../../src/copy/executeCopyInstructions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIhE;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAM3F"}
@@ -10,19 +10,32 @@ const uniqueValues_1 = require("../arrayUtils/uniqueValues");
10
10
  */
11
11
  async function executeCopyInstructions(config) {
12
12
  if (config && config.copyInstructions) {
13
+ validateConfig(config.copyInstructions);
13
14
  await createDirectories(config.copyInstructions);
14
15
  await Promise.all(config.copyInstructions.map(executeSingleCopyInstruction));
15
16
  }
16
17
  }
17
18
  exports.executeCopyInstructions = executeCopyInstructions;
19
+ function validateConfig(copyInstructions) {
20
+ copyInstructions.forEach(instr => {
21
+ if (instr.noSymlink === false && Array.isArray(instr.sourceFilePath) && instr.sourceFilePath.length > 1) {
22
+ throw new Error('Multiple source files cannot be specified when making a symlink');
23
+ }
24
+ });
25
+ }
18
26
  function createDirectories(copyInstructions) {
19
27
  return Promise.all(uniqueValues_1.uniqueValues(copyInstructions.map(instruction => path_1.dirname(instruction.destinationFilePath))).map(dirname => fs_extra_1.ensureDir(dirname)));
20
28
  }
21
29
  function executeSingleCopyInstruction(copyInstruction) {
22
30
  const sourceFileNames = arrayify_1.arrayify(copyInstruction.sourceFilePath);
23
- // source and dest are 1-to-1? perform binary copy.
31
+ // source and dest are 1-to-1? perform binary copy or symlink as desired.
24
32
  if (sourceFileNames.length === 1) {
25
- return fs_extra_1.copy(sourceFileNames[0], copyInstruction.destinationFilePath);
33
+ if (copyInstruction.noSymlink) {
34
+ return fs_extra_1.copy(sourceFileNames[0], copyInstruction.destinationFilePath);
35
+ }
36
+ else {
37
+ return fs_extra_1.ensureSymlink(path_1.resolve(sourceFileNames[0]), copyInstruction.destinationFilePath);
38
+ }
26
39
  }
27
40
  // perform text merge operation.
28
41
  return Promise.all(sourceFileNames.map(fileName => fs_extra_1.readFile(fileName))).then(fileContents => {
@@ -1 +1 @@
1
- {"version":3,"file":"executeCopyInstructions.js","sourceRoot":"","sources":["../../src/copy/executeCopyInstructions.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,uCAAgE;AAEhE,qDAAkD;AAClD,6DAA0D;AAE1D;;GAEG;AACI,KAAK,UAAU,uBAAuB,CAAC,MAA8B;IAC1E,IAAI,MAAM,IAAI,MAAM,CAAC,gBAAgB,EAAE;QACrC,MAAM,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACjD,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;KAC9E;AACH,CAAC;AALD,0DAKC;AAED,SAAS,iBAAiB,CAAC,gBAAmC;IAC5D,OAAO,OAAO,CAAC,GAAG,CAChB,2BAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,cAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,oBAAS,CAAC,OAAO,CAAC,CAAC,CAC/H,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,eAAgC;IACpE,MAAM,eAAe,GAAG,mBAAQ,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;IAEjE,oDAAoD;IACpD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;QAChC,OAAO,eAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,mBAAmB,CAAC,CAAC;KACtE;IAED,gCAAgC;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,mBAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;QAC1F,OAAO,oBAAS,CAAC,eAAe,CAAC,mBAAmB,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"executeCopyInstructions.js","sourceRoot":"","sources":["../../src/copy/executeCopyInstructions.ts"],"names":[],"mappings":";;;AAAA,+BAAwC;AACxC,uCAA+E;AAE/E,qDAAkD;AAClD,6DAA0D;AAE1D;;GAEG;AACI,KAAK,UAAU,uBAAuB,CAAC,MAA8B;IAC1E,IAAI,MAAM,IAAI,MAAM,CAAC,gBAAgB,EAAE;QACrC,cAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACxC,MAAM,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACjD,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;KAC9E;AACH,CAAC;AAND,0DAMC;AAED,SAAS,cAAc,CAAC,gBAAmC;IACzD,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC/B,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YACvG,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;SACpF;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,gBAAmC;IAC5D,OAAO,OAAO,CAAC,GAAG,CAChB,2BAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,cAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,oBAAS,CAAC,OAAO,CAAC,CAAC,CAC/H,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,eAAgC;IACpE,MAAM,eAAe,GAAG,mBAAQ,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;IAEjE,0EAA0E;IAC1E,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;QAChC,IAAI,eAAe,CAAC,SAAS,EAAE;YAC7B,OAAO,eAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,mBAAmB,CAAC,CAAC;SACtE;aAAM;YACL,OAAO,wBAAa,CAAC,cAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,mBAAmB,CAAC,CAAC;SACxF;KACF;IAED,gCAAgC;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,mBAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;QAC1F,OAAO,oBAAS,CAAC,eAAe,CAAC,mBAAmB,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -19,6 +19,10 @@ export interface EsLintTaskOptions {
19
19
  * (see https://eslint.org/docs/developer-guide/working-with-rules-deprecated#per-rule-performance).
20
20
  */
21
21
  timing?: boolean;
22
+ /** Can be set to write the eslint report to a file */
23
+ outputFile?: string;
24
+ /** Can be set to dictate the format of use for report file generated with the output flag: https://eslint.org/docs/latest/user-guide/command-line-interface#-f---format */
25
+ format?: string;
22
26
  }
23
27
  export declare function eslintTask(options?: EsLintTaskOptions): TaskFunction;
24
28
  //# sourceMappingURL=eslintTask.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eslintTask.d.ts","sourceRoot":"","sources":["../../src/tasks/eslintTask.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,YAAY,EAAE,MAAM,WAAW,CAAC;AAItE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,YAAY,CA2CxE"}
1
+ {"version":3,"file":"eslintTask.d.ts","sourceRoot":"","sources":["../../src/tasks/eslintTask.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,YAAY,EAAE,MAAM,WAAW,CAAC;AAItE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2KAA2K;IAC3K,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,YAAY,CA+CxE"}
@@ -6,7 +6,7 @@ const just_scripts_utils_1 = require("just-scripts-utils");
6
6
  const fs = require("fs");
7
7
  function eslintTask(options = {}) {
8
8
  return function eslint() {
9
- const { files, configPath, ignorePath, fix, extensions, noEslintRc, maxWarnings, resolvePluginsPath, cache, cacheLocation, timing, } = options;
9
+ const { files, configPath, ignorePath, fix, extensions, noEslintRc, maxWarnings, resolvePluginsPath, cache, cacheLocation, timing, outputFile, format } = options;
10
10
  const eslintCmd = just_task_1.resolve('eslint/bin/eslint.js');
11
11
  // Try all possible extensions in the order listed here: https://eslint.org/docs/user-guide/configuring#configuration-file-formats
12
12
  const eslintConfigPath = configPath || just_task_1.resolveCwd('.eslintrc', { extensions: ['.js', '.cjs', '.yaml', '.yml', '.json'] });
@@ -24,6 +24,8 @@ function eslintTask(options = {}) {
24
24
  ...(maxWarnings !== undefined ? ['--max-warnings', `${maxWarnings}`] : []),
25
25
  ...(cache ? ['--cache'] : []),
26
26
  ...(cacheLocation ? ['--cache-location', cacheLocation] : []),
27
+ ...(outputFile ? ['--output-file', outputFile] : []),
28
+ ...(format ? ['--format', format] : []),
27
29
  '--color',
28
30
  ];
29
31
  just_task_1.logger.info(just_scripts_utils_1.encodeArgs(eslintArgs).join(' '));
@@ -1 +1 @@
1
- {"version":3,"file":"eslintTask.js","sourceRoot":"","sources":["../../src/tasks/eslintTask.ts"],"names":[],"mappings":";;;AAAA,yCAAsE;AACtE,2DAAuD;AACvD,yBAAyB;AAwBzB,SAAgB,UAAU,CAAC,UAA6B,EAAE;IACxD,OAAO,SAAS,MAAM;QACpB,MAAM,EACJ,KAAK,EACL,UAAU,EACV,UAAU,EACV,GAAG,EACH,UAAU,EACV,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,KAAK,EACL,aAAa,EACb,MAAM,GACP,GAAG,OAAO,CAAC;QACZ,MAAM,SAAS,GAAG,mBAAO,CAAC,sBAAsB,CAAC,CAAC;QAClD,kIAAkI;QAClI,MAAM,gBAAgB,GAAG,UAAU,IAAI,sBAAU,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAE1H,IAAI,SAAS,IAAI,gBAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;YACpE,MAAM,gBAAgB,GAAG,UAAU,IAAI,sBAAU,CAAC,eAAe,CAAC,CAAC;YAEnE,MAAM,UAAU,GAAG;gBACjB,SAAS;gBACT,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC1B,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC;gBAC3D,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,+BAA+B,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpF,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzB,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7B,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,SAAS;aACV,CAAC;YAEF,kBAAM,CAAC,IAAI,CAAC,+BAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9C,OAAO,0BAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;SAC3G;aAAM;YACL,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B;IACH,CAAC,CAAC;AACJ,CAAC;AA3CD,gCA2CC"}
1
+ {"version":3,"file":"eslintTask.js","sourceRoot":"","sources":["../../src/tasks/eslintTask.ts"],"names":[],"mappings":";;;AAAA,yCAAsE;AACtE,2DAAuD;AACvD,yBAAyB;AA4BzB,SAAgB,UAAU,CAAC,UAA6B,EAAE;IACxD,OAAO,SAAS,MAAM;QACpB,MAAM,EACJ,KAAK,EACL,UAAU,EACV,UAAU,EACV,GAAG,EACH,UAAU,EACV,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,KAAK,EACL,aAAa,EACb,MAAM,EACN,UAAU,EACV,MAAM,EACP,GAAG,OAAO,CAAC;QACZ,MAAM,SAAS,GAAG,mBAAO,CAAC,sBAAsB,CAAC,CAAC;QAClD,kIAAkI;QAClI,MAAM,gBAAgB,GAAG,UAAU,IAAI,sBAAU,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAE1H,IAAI,SAAS,IAAI,gBAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;YACpE,MAAM,gBAAgB,GAAG,UAAU,IAAI,sBAAU,CAAC,eAAe,CAAC,CAAC;YAEnE,MAAM,UAAU,GAAG;gBACjB,SAAS;gBACT,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC1B,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC;gBAC3D,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,+BAA+B,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpF,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzB,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7B,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA,CAAC,CAAC,EAAE,CAAC;gBACnD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAC,MAAM,CAAC,CAAA,CAAC,CAAC,EAAE,CAAC;gBACrC,SAAS;aACV,CAAC;YAEF,kBAAM,CAAC,IAAI,CAAC,+BAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9C,OAAO,0BAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;SAC3G;aAAM;YACL,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B;IACH,CAAC,CAAC;AACJ,CAAC;AA/CD,gCA+CC"}
@@ -18,13 +18,13 @@ function sassTask(optionsOrCreateSourceModule, postcssPlugins) {
18
18
  }
19
19
  postcssPlugins = postcssPlugins || [];
20
20
  return function sass(done) {
21
- const nodeSass = tryRequire_1.tryRequire('node-sass');
21
+ const sass = tryRequire_1.tryRequire('sass') || tryRequire_1.tryRequire('node-sass');
22
22
  const postcss = tryRequire_1.tryRequire('postcss');
23
23
  const autoprefixer = tryRequire_1.tryRequire('autoprefixer');
24
24
  const postcssRtl = tryRequire_1.tryRequire('postcss-rtl');
25
25
  const clean = tryRequire_1.tryRequire('postcss-clean');
26
- if (!nodeSass || !postcss || !autoprefixer) {
27
- just_task_1.logger.warn('One of these [node-sass, postcss, autoprefixer] is not installed, so this task has no effect');
26
+ if (!sass || !postcss || !autoprefixer) {
27
+ just_task_1.logger.warn('One or more dependencies (sass or node-sass, postcss, autoprefixer) is not installed, so this task has no effect');
28
28
  done();
29
29
  return;
30
30
  }
@@ -33,7 +33,7 @@ function sassTask(optionsOrCreateSourceModule, postcssPlugins) {
33
33
  if (files.length) {
34
34
  const tasks = files.map((fileName) => function (cb) {
35
35
  fileName = path.resolve(fileName);
36
- nodeSass.render({
36
+ sass.render({
37
37
  file: fileName,
38
38
  importer: patchSassUrl,
39
39
  includePaths: [path.resolve(process.cwd(), 'node_modules')],
@@ -1 +1 @@
1
- {"version":3,"file":"sassTask.js","sourceRoot":"","sources":["../../src/tasks/sassTask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sassTask.js","sourceRoot":"","sources":["../../src/tasks/sassTask.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "just-scripts",
3
- "version": "1.8.1",
3
+ "version": "2.0.1",
4
4
  "description": "Just Stack Scripts",
5
5
  "keywords": [],
6
6
  "repository": {
@@ -13,6 +13,13 @@ export interface CopyInstruction {
13
13
  * The path+filename of the destination file.
14
14
  */
15
15
  destinationFilePath: string;
16
+
17
+ /**
18
+ * Set to true if a copy or merge should be performed, false if a symlink should be created.
19
+ * If multiple source files are specified (i.e. a merge), this must be true or undefined.
20
+ * The default value of undefined is equivalent to true for a merge, false in all other cases.
21
+ */
22
+ noSymlink?: boolean;
16
23
  }
17
24
 
18
25
  export interface CopyConfig {
@@ -24,10 +31,15 @@ export interface CopyConfig {
24
31
  * For example copyFilesToDestinationDirectory(['some/path/foo.js', 'bar.js'], 'dest/target') would result in the creation of
25
32
  * files 'dest/target/foo.js' and 'dest/target/bar.js'.
26
33
  */
27
- export function copyFilesToDestinationDirectory(sourceFilePaths: string | string[], destinationDirectory: string): CopyInstruction[] {
34
+ export function copyFilesToDestinationDirectory(
35
+ sourceFilePaths: string | string[],
36
+ destinationDirectory: string,
37
+ noSymlinks?: boolean,
38
+ ): CopyInstruction[] {
28
39
  return arrayify(sourceFilePaths).map(sourceName => ({
29
40
  sourceFilePath: normalize(sourceName),
30
41
  destinationFilePath: join(destinationDirectory, basename(sourceName)),
42
+ noSymlink: noSymlinks,
31
43
  }));
32
44
  }
33
45
 
@@ -40,8 +52,9 @@ export function copyFileToDestinationDirectoryWithRename(
40
52
  sourceFilePath: string,
41
53
  destinationName: string,
42
54
  destinationDirectory: string,
55
+ noSymlink?: boolean,
43
56
  ): CopyInstruction[] {
44
- return [{ sourceFilePath, destinationFilePath: join(destinationDirectory, destinationName) }];
57
+ return [{ sourceFilePath, destinationFilePath: join(destinationDirectory, destinationName), noSymlink }];
45
58
  }
46
59
 
47
60
  /**
@@ -52,10 +65,12 @@ export function copyFileToDestinationDirectoryWithRename(
52
65
  export function copyFilesToDestinationDirectoryWithRename(
53
66
  instrs: { sourceFilePath: string; destinationName: string }[],
54
67
  destinationDirectory: string,
68
+ noSymlinks?: boolean,
55
69
  ): CopyInstruction[] {
56
70
  return instrs.map(instr => ({
57
71
  sourceFilePath: instr.sourceFilePath,
58
72
  destinationFilePath: join(destinationDirectory, instr.destinationName),
73
+ noSymlink: noSymlinks,
59
74
  }));
60
75
  }
61
76
 
@@ -67,6 +82,7 @@ export function copyFilesInDirectory(
67
82
  sourceDirectoryPath: string,
68
83
  outputDirectoryPath: string,
69
84
  filterFunction?: (file: string) => boolean,
85
+ noSymlinks?: boolean,
70
86
  ): CopyInstruction[] {
71
87
  let files = readdirSync(sourceDirectoryPath);
72
88
 
@@ -76,6 +92,7 @@ export function copyFilesInDirectory(
76
92
  return files.map(file => ({
77
93
  sourceFilePath: join(sourceDirectoryPath, file),
78
94
  destinationFilePath: join(outputDirectoryPath, file),
95
+ noSymlink: noSymlinks,
79
96
  }));
80
97
  }
81
98
 
@@ -1,8 +1,9 @@
1
+ import * as mockfs from 'mock-fs';
1
2
  import * as path from 'path';
2
3
  import * as fs from 'fs';
3
- import mockfs = require('mock-fs');
4
4
  // import { dirSync, fileSync, DirResult, FileResult } from 'tmp';
5
5
  import { executeCopyInstructions } from '../executeCopyInstructions';
6
+ import { CopyInstruction } from '../CopyInstruction';
6
7
 
7
8
  describe('executeCopyInstructions functional tests', () => {
8
9
  const sourceDir = 'sourceDir';
@@ -30,8 +31,8 @@ describe('executeCopyInstructions functional tests', () => {
30
31
  mockfs.restore();
31
32
  });
32
33
 
33
- it('executes single source copy instructions', async () => {
34
- const copyInstruction = {
34
+ it('executes single source copy instructions (symlink)', async () => {
35
+ const copyInstruction: CopyInstruction = {
35
36
  sourceFilePath: sourceFilePath1,
36
37
  destinationFilePath: destFilePath,
37
38
  };
@@ -43,13 +44,15 @@ describe('executeCopyInstructions functional tests', () => {
43
44
  });
44
45
 
45
46
  expect(fs.existsSync(destFilePath)).toBeTruthy();
47
+ expect(fs.lstatSync(destFilePath).isSymbolicLink()).toBeTruthy();
46
48
  expect(fs.readFileSync(destFilePath).toString()).toEqual(sourceFileContents1);
47
49
  });
48
50
 
49
- it('executes single source (arrayified) copy instructions', async () => {
50
- const copyInstruction = {
51
+ it('executes single source (arrayified) copy instructions (copy)', async () => {
52
+ const copyInstruction: CopyInstruction = {
51
53
  sourceFilePath: [sourceFilePath1],
52
54
  destinationFilePath: destFilePath,
55
+ noSymlink: true,
53
56
  };
54
57
 
55
58
  expect(fs.existsSync(destFilePath)).toBeFalsy();
@@ -59,11 +62,12 @@ describe('executeCopyInstructions functional tests', () => {
59
62
  });
60
63
 
61
64
  expect(fs.existsSync(destFilePath)).toBeTruthy();
65
+ expect(fs.lstatSync(destFilePath).isSymbolicLink()).toBeFalsy();
62
66
  expect(fs.readFileSync(destFilePath).toString()).toEqual(sourceFileContents1);
63
67
  });
64
68
 
65
69
  it('merges output', async () => {
66
- const copyInstruction = {
70
+ const copyInstruction: CopyInstruction = {
67
71
  sourceFilePath: [sourceFilePath1, sourceFilePath2],
68
72
  destinationFilePath: destFilePath,
69
73
  };
@@ -77,9 +81,24 @@ describe('executeCopyInstructions functional tests', () => {
77
81
  });
78
82
 
79
83
  expect(fs.existsSync(destFilePath)).toBeTruthy();
84
+ expect(fs.lstatSync(destFilePath).isSymbolicLink()).toBeFalsy();
80
85
  expect(fs.readFileSync(destFilePath).toString()).toEqual(expectedOutput);
81
86
  });
82
87
 
88
+ it('fails to validate merge + symlink copy instruction', async () => {
89
+ const copyInstruction: CopyInstruction = {
90
+ sourceFilePath: [sourceFilePath1, sourceFilePath2],
91
+ destinationFilePath: destFilePath,
92
+ noSymlink: false,
93
+ };
94
+
95
+ const promise = executeCopyInstructions({
96
+ copyInstructions: [copyInstruction],
97
+ });
98
+
99
+ await expect(promise).rejects.toThrow();
100
+ });
101
+
83
102
  /**
84
103
  * TODO:
85
104
  * Rationalize and document expected executeCopyInstructions behavior.
@@ -1,5 +1,5 @@
1
- import { dirname } from 'path';
2
- import { readFile, writeFile, copy, ensureDir } from 'fs-extra';
1
+ import { dirname, resolve } from 'path';
2
+ import { readFile, writeFile, copy, ensureDir, ensureSymlink } from 'fs-extra';
3
3
  import { CopyInstruction, CopyConfig } from './CopyInstruction';
4
4
  import { arrayify } from '../arrayUtils/arrayify';
5
5
  import { uniqueValues } from '../arrayUtils/uniqueValues';
@@ -9,11 +9,20 @@ import { uniqueValues } from '../arrayUtils/uniqueValues';
9
9
  */
10
10
  export async function executeCopyInstructions(config: CopyConfig | undefined): Promise<void> {
11
11
  if (config && config.copyInstructions) {
12
+ validateConfig(config.copyInstructions);
12
13
  await createDirectories(config.copyInstructions);
13
14
  await Promise.all(config.copyInstructions.map(executeSingleCopyInstruction));
14
15
  }
15
16
  }
16
17
 
18
+ function validateConfig(copyInstructions: CopyInstruction[]) {
19
+ copyInstructions.forEach(instr => {
20
+ if (instr.noSymlink === false && Array.isArray(instr.sourceFilePath) && instr.sourceFilePath.length > 1) {
21
+ throw new Error('Multiple source files cannot be specified when making a symlink');
22
+ }
23
+ });
24
+ }
25
+
17
26
  function createDirectories(copyInstructions: CopyInstruction[]) {
18
27
  return Promise.all(
19
28
  uniqueValues(copyInstructions.map(instruction => dirname(instruction.destinationFilePath))).map(dirname => ensureDir(dirname)),
@@ -23,9 +32,13 @@ function createDirectories(copyInstructions: CopyInstruction[]) {
23
32
  function executeSingleCopyInstruction(copyInstruction: CopyInstruction) {
24
33
  const sourceFileNames = arrayify(copyInstruction.sourceFilePath);
25
34
 
26
- // source and dest are 1-to-1? perform binary copy.
35
+ // source and dest are 1-to-1? perform binary copy or symlink as desired.
27
36
  if (sourceFileNames.length === 1) {
28
- return copy(sourceFileNames[0], copyInstruction.destinationFilePath);
37
+ if (copyInstruction.noSymlink) {
38
+ return copy(sourceFileNames[0], copyInstruction.destinationFilePath);
39
+ } else {
40
+ return ensureSymlink(resolve(sourceFileNames[0]), copyInstruction.destinationFilePath);
41
+ }
29
42
  }
30
43
 
31
44
  // perform text merge operation.
@@ -22,6 +22,10 @@ export interface EsLintTaskOptions {
22
22
  * (see https://eslint.org/docs/developer-guide/working-with-rules-deprecated#per-rule-performance).
23
23
  */
24
24
  timing?: boolean;
25
+ /** Can be set to write the eslint report to a file */
26
+ outputFile?: string;
27
+ /** Can be set to dictate the format of use for report file generated with the output flag: https://eslint.org/docs/latest/user-guide/command-line-interface#-f---format */
28
+ format?: string;
25
29
  }
26
30
 
27
31
  export function eslintTask(options: EsLintTaskOptions = {}): TaskFunction {
@@ -38,6 +42,8 @@ export function eslintTask(options: EsLintTaskOptions = {}): TaskFunction {
38
42
  cache,
39
43
  cacheLocation,
40
44
  timing,
45
+ outputFile,
46
+ format
41
47
  } = options;
42
48
  const eslintCmd = resolve('eslint/bin/eslint.js');
43
49
  // Try all possible extensions in the order listed here: https://eslint.org/docs/user-guide/configuring#configuration-file-formats
@@ -58,6 +64,8 @@ export function eslintTask(options: EsLintTaskOptions = {}): TaskFunction {
58
64
  ...(maxWarnings !== undefined ? ['--max-warnings', `${maxWarnings}`] : []),
59
65
  ...(cache ? ['--cache'] : []),
60
66
  ...(cacheLocation ? ['--cache-location', cacheLocation] : []),
67
+ ...(outputFile ? ['--output-file', outputFile]: []),
68
+ ...(format ? ['--format',format]: []),
61
69
  '--color',
62
70
  ];
63
71
 
@@ -28,14 +28,14 @@ export function sassTask(
28
28
  postcssPlugins = postcssPlugins || [];
29
29
 
30
30
  return function sass(done: (err?: Error) => void) {
31
- const nodeSass = tryRequire('node-sass');
31
+ const sass = tryRequire('sass') || tryRequire('node-sass');
32
32
  const postcss = tryRequire('postcss');
33
33
  const autoprefixer = tryRequire('autoprefixer');
34
34
  const postcssRtl = tryRequire('postcss-rtl');
35
35
  const clean = tryRequire('postcss-clean');
36
36
 
37
- if (!nodeSass || !postcss || !autoprefixer) {
38
- logger.warn('One of these [node-sass, postcss, autoprefixer] is not installed, so this task has no effect');
37
+ if (!sass || !postcss || !autoprefixer) {
38
+ logger.warn('One or more dependencies (sass or node-sass, postcss, autoprefixer) is not installed, so this task has no effect');
39
39
  done();
40
40
  return;
41
41
  }
@@ -48,7 +48,7 @@ export function sassTask(
48
48
  (fileName: string) =>
49
49
  function (cb: any) {
50
50
  fileName = path.resolve(fileName);
51
- nodeSass.render(
51
+ sass.render(
52
52
  {
53
53
  file: fileName,
54
54
  importer: patchSassUrl,