@taro-minify-pack/plugin-remote-assets 0.0.4 → 0.0.5-alpha.0

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/dist/index.js CHANGED
@@ -31,34 +31,29 @@ const upload_assets_1 = require("./upload-assets");
31
31
  const utils_1 = require("./utils");
32
32
  const path_transform_1 = require("./path-transform/path-transform");
33
33
  __exportStar(require("./upload-adapter"), exports);
34
- const cacheFilePath = path_1.default.resolve(__dirname, 'remote-assets-cache.json');
34
+ const cacheFilePath = path_1.default.resolve(process.cwd(), 'node_modules', '.cache/remote-assets-cache.json');
35
35
  exports.default = (ctx, pluginOpts) => {
36
36
  const transform = (0, path_transform_1.pathTransform)({ cacheFilePath, pathAlias: pluginOpts.pathAlias || {} });
37
37
  ctx.onBuildStart(() => __awaiter(void 0, void 0, void 0, function* () {
38
38
  const { assetsDirPath, uploader } = pluginOpts;
39
- const remoteAssetInfoList = yield (0, upload_assets_1.uploadAssets)({ assetsDirPath, upload: uploader });
39
+ const cacheData = (0, utils_1.getCacheData)(cacheFilePath);
40
+ const remoteAssetInfoList = yield (0, upload_assets_1.uploadAssets)({ assetsDirPath, cacheData, upload: uploader });
40
41
  const remoteAssetInfoMap = remoteAssetInfoList.reduce((result, item) => {
41
42
  return Object.assign(Object.assign({}, result), { [item.localPath]: item.remoteUrl });
42
- }, {});
43
+ }, cacheData);
43
44
  (0, utils_1.saveCacheData)(cacheFilePath, remoteAssetInfoMap);
44
45
  }));
45
46
  ctx.modifyRunnerOpts((curRunnerOpts) => {
46
47
  const { postcss: curPostcssOpts } = curRunnerOpts.opts;
47
- curRunnerOpts.opts.postcss = Object.assign(Object.assign({}, curPostcssOpts), { [path_1.default.resolve(__dirname, './path-transform/path-transform-postcss')]: {
48
- enabled: true,
49
- config: { transform }
50
- } });
48
+ const postCssPluginPathTransformPath = path_1.default.resolve(__dirname, './path-transform/path-transform-postcss');
49
+ curRunnerOpts.opts.postcss = Object.assign(Object.assign({}, curPostcssOpts), { [postCssPluginPathTransformPath]: { enabled: true, config: { transform } } });
51
50
  });
52
51
  ctx.modifyWebpackChain(({ chain }) => {
53
52
  const babelPluginPathTransformPath = path_1.default.resolve(__dirname, './path-transform/path-transform-babel');
54
53
  chain.module
55
54
  .rule('script')
56
55
  .use('babelLoader')
57
- .options({
58
- plugins: [
59
- [babelPluginPathTransformPath, { transform }]
60
- ]
61
- });
56
+ .options({ plugins: [[babelPluginPathTransformPath, { transform }]] });
62
57
  });
63
58
  };
64
59
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAuB;AAGvB,mDAA8C;AAC9C,mCAAuC;AACvC,oEAA+D;AAI/D,mDAAgC;AAEhC,MAAM,aAAa,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAA;AAEzE,kBAAe,CAAC,GAAmB,EAAE,UAAgC,EAAE,EAAE;IACvE,MAAM,SAAS,GAAG,IAAA,8BAAa,EAAC,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC,CAAA;IAEzF,GAAG,CAAC,YAAY,CAAC,GAAS,EAAE;QAC1B,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAA;QAC9C,MAAM,mBAAmB,GAAG,MAAM,IAAA,4BAAY,EAAC,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;QACnF,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YACrE,uCAAY,MAAM,KAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,IAAE;QACxD,CAAC,EAAE,EAAE,CAAC,CAAA;QACN,IAAA,qBAAa,EAAC,aAAa,EAAE,kBAAkB,CAAC,CAAA;IAClD,CAAC,CAAA,CAAC,CAAA;IAEF,GAAG,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,EAAE;QACrC,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,aAAa,CAAC,IAAI,CAAA;QACtD,aAAa,CAAC,IAAI,CAAC,OAAO,mCACrB,cAAc,KACjB,CAAC,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,yCAAyC,CAAC,CAAC,EAAE;gBACpE,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,EAAE,SAAS,EAAE;aACtB,GACF,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QACnC,MAAM,4BAA4B,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,uCAAuC,CAAC,CAAA;QAErG,KAAK,CAAC,MAAM;aACT,IAAI,CAAC,QAAQ,CAAC;aACd,GAAG,CAAC,aAAa,CAAC;aAClB,OAAO,CAAC;YACP,OAAO,EAAE;gBACP,CAAC,4BAA4B,EAAE,EAAE,SAAS,EAAE,CAAC;aAC9C;SACF,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAuB;AAGvB,mDAA8C;AAC9C,mCAAqD;AACrD,oEAA+D;AAI/D,mDAAgC;AAEhC,MAAM,aAAa,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,iCAAiC,CAAC,CAAA;AAEpG,kBAAe,CAAC,GAAmB,EAAE,UAAgC,EAAE,EAAE;IACvE,MAAM,SAAS,GAAG,IAAA,8BAAa,EAAC,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC,CAAA;IAEzF,GAAG,CAAC,YAAY,CAAC,GAAS,EAAE;QAC1B,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAA;QAC9C,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,aAAa,CAAC,CAAA;QAC7C,MAAM,mBAAmB,GAAG,MAAM,IAAA,4BAAY,EAAC,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC9F,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YACrE,uCAAY,MAAM,KAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,IAAE;QACxD,CAAC,EAAE,SAAS,CAAC,CAAA;QACb,IAAA,qBAAa,EAAC,aAAa,EAAE,kBAAkB,CAAC,CAAA;IAClD,CAAC,CAAA,CAAC,CAAA;IAEF,GAAG,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,EAAE;QACrC,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,aAAa,CAAC,IAAI,CAAA;QACtD,MAAM,8BAA8B,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,yCAAyC,CAAC,CAAA;QACzG,aAAa,CAAC,IAAI,CAAC,OAAO,mCACrB,cAAc,KACjB,CAAC,8BAA8B,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,GAC3E,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QACnC,MAAM,4BAA4B,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,uCAAuC,CAAC,CAAA;QAErG,KAAK,CAAC,MAAM;aACT,IAAI,CAAC,QAAQ,CAAC;aACd,GAAG,CAAC,aAAa,CAAC;aAClB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,4BAA4B,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -4,7 +4,7 @@ exports.pathTransform = void 0;
4
4
  const utils_1 = require("../utils");
5
5
  const pathTransform = (opt) => {
6
6
  return (path) => {
7
- const remoteAssetInfoMap = (0, utils_1.getCacheData)(opt.cacheFilePath) || {};
7
+ const remoteAssetInfoMap = (0, utils_1.getCacheData)(opt.cacheFilePath);
8
8
  const pathAliasRegMap = Object.keys(opt.pathAlias).reduce((result, key) => {
9
9
  return Object.assign(Object.assign({}, result), { [key]: new RegExp(`^${key}`) });
10
10
  }, {});
@@ -1 +1 @@
1
- {"version":3,"file":"path-transform.js","sourceRoot":"","sources":["../../src/path-transform/path-transform.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AAO/B,MAAM,aAAa,GAAG,CAAC,GAAQ,EAAE,EAAE;IACxC,OAAO,CAAC,IAAY,EAAE,EAAE;QACtB,MAAM,kBAAkB,GAAG,IAAA,oBAAY,EAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;QAEhE,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAyB,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YAChG,uCAAY,MAAM,KAAE,CAAC,GAAG,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,IAAE;QACpD,CAAC,EAAE,EAAE,CAAC,CAAA;QAEN,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;YACtB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAChG,IAAI,cAAc;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAA;YACvG,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,EAAE,CAAA;QACJ,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAA;QACpD,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAA;IACtC,CAAC,CAAA;AACH,CAAC,CAAA;AAhBY,QAAA,aAAa,iBAgBzB"}
1
+ {"version":3,"file":"path-transform.js","sourceRoot":"","sources":["../../src/path-transform/path-transform.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AAO/B,MAAM,aAAa,GAAG,CAAC,GAAQ,EAAE,EAAE;IACxC,OAAO,CAAC,IAAY,EAAE,EAAE;QACtB,MAAM,kBAAkB,GAAG,IAAA,oBAAY,EAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAE1D,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAyB,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YAChG,uCAAY,MAAM,KAAE,CAAC,GAAG,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,IAAE;QACpD,CAAC,EAAE,EAAE,CAAC,CAAA;QAEN,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;YACtB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAChG,IAAI,cAAc;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAA;YACvG,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,EAAE,CAAA;QACJ,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAA;QACpD,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAA;IACtC,CAAC,CAAA;AACH,CAAC,CAAA;AAhBY,QAAA,aAAa,iBAgBzB"}
@@ -1,6 +1,7 @@
1
1
  import { Uploader } from '../types';
2
2
  interface UploaderOpt {
3
3
  assetsDirPath?: string;
4
+ cacheData?: Record<string, any>;
4
5
  upload?: Uploader;
5
6
  }
6
7
  export declare const uploadAssets: (opt: UploaderOpt) => Promise<import("../types").RemoteAssetInfo[]>;
@@ -17,18 +17,23 @@ const promise_pool_1 = require("@supercharge/promise-pool");
17
17
  const utils_1 = require("../utils");
18
18
  const path_1 = __importDefault(require("path"));
19
19
  const uploadAssets = (opt) => __awaiter(void 0, void 0, void 0, function* () {
20
- const { assetsDirPath, upload } = opt;
20
+ const { assetsDirPath, cacheData, upload } = opt;
21
21
  if (!assetsDirPath || !upload)
22
22
  return [];
23
+ const uploadedAssetFileNames = Object.values(cacheData || {}).map(item => path_1.default.basename(new URL(item).pathname));
23
24
  const assetsPaths = (0, utils_1.travelFiles)(assetsDirPath);
24
- const { results: remoteAssetInfoList } = yield promise_pool_1.PromisePool.withConcurrency(2)
25
- .for(assetsPaths)
26
- .process((localPath) => __awaiter(void 0, void 0, void 0, function* () {
25
+ const assetsInfos = assetsPaths.reduce((result, localPath) => {
27
26
  const uniqueKey = (0, utils_1.generateFileUniqueKey)(localPath);
28
27
  const { ext } = path_1.default.parse(localPath);
29
- return upload({ localPath, uniqueKey, ext });
30
- }));
31
- return remoteAssetInfoList;
28
+ const isUploaded = uploadedAssetFileNames.includes(`${uniqueKey}${ext}`);
29
+ if (isUploaded)
30
+ return result;
31
+ return [...result, { localPath, ext, uniqueKey }];
32
+ }, []);
33
+ const { results: remoteAssetInfoList } = yield promise_pool_1.PromisePool.withConcurrency(2)
34
+ .for(assetsInfos)
35
+ .process((localAssetInfo) => __awaiter(void 0, void 0, void 0, function* () { return upload(localAssetInfo); }));
36
+ return remoteAssetInfoList.filter(Boolean);
32
37
  });
33
38
  exports.uploadAssets = uploadAssets;
34
39
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/upload-assets/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4DAAuD;AAEvD,mCAA4D;AAC5D,gDAAuB;AAOhB,MAAM,YAAY,GAAG,CAAO,GAAgB,EAAE,EAAE;IACrD,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IAErC,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IAExC,MAAM,WAAW,GAAG,IAAA,mBAAW,EAAC,aAAa,CAAC,CAAA;IAE9C,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,MAAM,0BAAW,CAAC,eAAe,CAAC,CAAC,CAAC;SAC1E,GAAG,CAAC,WAAW,CAAC;SAChB,OAAO,CAAC,CAAO,SAAS,EAAE,EAAE;QAC3B,MAAM,SAAS,GAAG,IAAA,6BAAqB,EAAC,SAAS,CAAC,CAAA;QAClD,MAAM,EAAE,GAAG,EAAE,GAAG,cAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACrC,OAAO,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAA;IAC9C,CAAC,CAAA,CAAC,CAAA;IAEJ,OAAO,mBAAmB,CAAA;AAC5B,CAAC,CAAA,CAAA;AAhBY,QAAA,YAAY,gBAgBxB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/upload-assets/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4DAAuD;AAEvD,mCAA4D;AAC5D,gDAAuB;AAQhB,MAAM,YAAY,GAAG,CAAO,GAAgB,EAAE,EAAE;IACrD,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IAEhD,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IAExC,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,cAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEhH,MAAM,WAAW,GAAG,IAAA,mBAAW,EAAC,aAAa,CAAC,CAAA;IAE9C,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;QAC7E,MAAM,SAAS,GAAG,IAAA,6BAAqB,EAAC,SAAS,CAAC,CAAA;QAClD,MAAM,EAAE,GAAG,EAAE,GAAG,cAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACrC,MAAM,UAAU,GAAG,sBAAsB,CAAC,QAAQ,CAAC,GAAG,SAAS,GAAG,GAAG,EAAE,CAAC,CAAA;QACxE,IAAI,UAAU;YAAE,OAAO,MAAM,CAAA;QAC7B,OAAO,CAAC,GAAG,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAA;IACnD,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,MAAM,0BAAW,CAAC,eAAe,CAAC,CAAC,CAAC;SAC1E,GAAG,CAAC,WAAW,CAAC;SAChB,OAAO,CAAC,CAAO,cAAc,EAAE,EAAE,kDAAC,OAAA,MAAM,CAAC,cAAc,CAAC,CAAA,GAAA,CAAC,CAAA;IAE5D,OAAO,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AAC5C,CAAC,CAAA,CAAA;AAtBY,QAAA,YAAY,gBAsBxB"}
package/dist/utils.js CHANGED
@@ -35,11 +35,14 @@ const getCacheData = (cacheFilePath) => {
35
35
  return JSON.parse(fs_1.default.readFileSync(cacheFilePath).toString());
36
36
  }
37
37
  catch (error) {
38
- return null;
38
+ return {};
39
39
  }
40
40
  };
41
41
  exports.getCacheData = getCacheData;
42
42
  const saveCacheData = (cacheFilePath, cacheData) => {
43
+ const cacheDirPath = path_1.default.dirname(cacheFilePath);
44
+ if (!fs_1.default.existsSync(cacheDirPath))
45
+ fs_1.default.mkdirSync(cacheDirPath, { recursive: true });
43
46
  fs_1.default.writeFileSync(cacheFilePath, JSON.stringify(cacheData));
44
47
  };
45
48
  exports.saveCacheData = saveCacheData;
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAmB;AACnB,gDAAuB;AACvB,8CAAqB;AAErB;;GAEG;AACI,MAAM,WAAW,GAAG,CAAC,GAAW,EAAY,EAAE;IACnD,MAAM,KAAK,GAAG,YAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACjC,OAAO,KAAK,CAAC,MAAM,CAAW,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QAC7C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACrC,IAAI,CAAC,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;YAAE,OAAO,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,CAAA;QACtE,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,QAAQ,CAAC,CAAC,CAAA;IAC9C,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC,CAAA;AAPY,QAAA,WAAW,eAOvB;AAED;;GAEG;AACI,MAAM,qBAAqB,GAAG,CAAC,QAAgB,EAAE,EAAE;IACxD,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,cAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC1C,MAAM,MAAM,GAAG,YAAE,CAAC,YAAY,CAAC,GAAG,GAAG,GAAG,cAAI,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAA;IAC1D,OAAO,IAAA,aAAG,EAAC,MAAM,CAAC,CAAA;AACpB,CAAC,CAAA;AAJY,QAAA,qBAAqB,yBAIjC;AAEM,MAAM,YAAY,GAAG,CAAC,aAAoB,EAAO,EAAE;IACxD,IAAI,CAAC;QACH,YAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC9D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAPY,QAAA,YAAY,gBAOxB;AAEM,MAAM,aAAa,GAAG,CAAC,aAAoB,EAAE,SAAa,EAAE,EAAE;IACnE,YAAE,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA;AAC5D,CAAC,CAAA;AAFY,QAAA,aAAa,iBAEzB;AAEM,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;AAAf,QAAA,IAAI,QAAW"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAmB;AACnB,gDAAuB;AACvB,8CAAqB;AAErB;;GAEG;AACI,MAAM,WAAW,GAAG,CAAC,GAAW,EAAY,EAAE;IACnD,MAAM,KAAK,GAAG,YAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACjC,OAAO,KAAK,CAAC,MAAM,CAAW,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QAC7C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACrC,IAAI,CAAC,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;YAAE,OAAO,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,CAAA;QACtE,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,QAAQ,CAAC,CAAC,CAAA;IAC9C,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC,CAAA;AAPY,QAAA,WAAW,eAOvB;AAED;;GAEG;AACI,MAAM,qBAAqB,GAAG,CAAC,QAAgB,EAAE,EAAE;IACxD,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,cAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC1C,MAAM,MAAM,GAAG,YAAE,CAAC,YAAY,CAAC,GAAG,GAAG,GAAG,cAAI,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAA;IAC1D,OAAO,IAAA,aAAG,EAAC,MAAM,CAAC,CAAA;AACpB,CAAC,CAAA;AAJY,QAAA,qBAAqB,yBAIjC;AAEM,MAAM,YAAY,GAAG,CAAC,aAAoB,EAAO,EAAE;IACxD,IAAI,CAAC;QACH,YAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC9D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC,CAAA;AAPY,QAAA,YAAY,gBAOxB;AAEM,MAAM,aAAa,GAAG,CAAC,aAAoB,EAAE,SAAa,EAAE,EAAE;IACnE,MAAM,YAAY,GAAG,cAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IAChD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,YAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACjF,YAAE,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA;AAC5D,CAAC,CAAA;AAJY,QAAA,aAAa,iBAIzB;AAEM,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;AAAf,QAAA,IAAI,QAAW"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taro-minify-pack/plugin-remote-assets",
3
- "version": "0.0.4",
3
+ "version": "0.0.5-alpha.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/index.ts CHANGED
@@ -2,35 +2,34 @@ import path from 'path'
2
2
  import { RemoteAssetPluginOpt } from '@/types'
3
3
  import { IPluginContext } from '@tarojs/service'
4
4
  import { uploadAssets } from './upload-assets'
5
- import { saveCacheData } from './utils'
5
+ import { getCacheData, saveCacheData } from './utils'
6
6
  import { pathTransform } from '@/path-transform/path-transform'
7
7
 
8
8
  export { RemoteAssetPluginOpt } from '@/types'
9
9
 
10
10
  export * from './upload-adapter'
11
11
 
12
- const cacheFilePath = path.resolve(__dirname, 'remote-assets-cache.json')
12
+ const cacheFilePath = path.resolve(process.cwd(), 'node_modules', '.cache/remote-assets-cache.json')
13
13
 
14
14
  export default (ctx: IPluginContext, pluginOpts: RemoteAssetPluginOpt) => {
15
15
  const transform = pathTransform({ cacheFilePath, pathAlias: pluginOpts.pathAlias || {} })
16
16
 
17
17
  ctx.onBuildStart(async () => {
18
18
  const { assetsDirPath, uploader } = pluginOpts
19
- const remoteAssetInfoList = await uploadAssets({ assetsDirPath, upload: uploader })
19
+ const cacheData = getCacheData(cacheFilePath)
20
+ const remoteAssetInfoList = await uploadAssets({ assetsDirPath, cacheData, upload: uploader })
20
21
  const remoteAssetInfoMap = remoteAssetInfoList.reduce((result, item) => {
21
22
  return { ...result, [item.localPath]: item.remoteUrl }
22
- }, {})
23
+ }, cacheData)
23
24
  saveCacheData(cacheFilePath, remoteAssetInfoMap)
24
25
  })
25
26
 
26
27
  ctx.modifyRunnerOpts((curRunnerOpts) => {
27
28
  const { postcss: curPostcssOpts } = curRunnerOpts.opts
29
+ const postCssPluginPathTransformPath = path.resolve(__dirname, './path-transform/path-transform-postcss')
28
30
  curRunnerOpts.opts.postcss = {
29
31
  ...curPostcssOpts,
30
- [path.resolve(__dirname, './path-transform/path-transform-postcss')]: {
31
- enabled: true,
32
- config: { transform }
33
- }
32
+ [postCssPluginPathTransformPath]: { enabled: true, config: { transform } }
34
33
  }
35
34
  })
36
35
 
@@ -40,10 +39,6 @@ export default (ctx: IPluginContext, pluginOpts: RemoteAssetPluginOpt) => {
40
39
  chain.module
41
40
  .rule('script')
42
41
  .use('babelLoader')
43
- .options({
44
- plugins: [
45
- [babelPluginPathTransformPath, { transform }]
46
- ]
47
- })
42
+ .options({ plugins: [[babelPluginPathTransformPath, { transform }]] })
48
43
  })
49
44
  }
@@ -7,7 +7,7 @@ interface Opt{
7
7
 
8
8
  export const pathTransform = (opt: Opt) => {
9
9
  return (path: string) => {
10
- const remoteAssetInfoMap = getCacheData(opt.cacheFilePath) || {}
10
+ const remoteAssetInfoMap = getCacheData(opt.cacheFilePath)
11
11
 
12
12
  const pathAliasRegMap = Object.keys(opt.pathAlias).reduce<Record<string, RegExp>>((result, key) => {
13
13
  return { ...result, [key]: new RegExp(`^${key}`) }
@@ -1,27 +1,34 @@
1
1
  import { PromisePool } from '@supercharge/promise-pool'
2
- import { Uploader } from '@/types'
2
+ import { LocalAssetInfo, Uploader } from '@/types'
3
3
  import { generateFileUniqueKey, travelFiles } from '@/utils'
4
4
  import path from 'path'
5
5
 
6
6
  interface UploaderOpt {
7
7
  assetsDirPath?: string,
8
+ cacheData?:Record<string, any>
8
9
  upload?: Uploader
9
10
  }
10
11
 
11
12
  export const uploadAssets = async (opt: UploaderOpt) => {
12
- const { assetsDirPath, upload } = opt
13
+ const { assetsDirPath, cacheData, upload } = opt
13
14
 
14
15
  if (!assetsDirPath || !upload) return []
15
16
 
17
+ const uploadedAssetFileNames = Object.values(cacheData || {}).map(item => path.basename(new URL(item).pathname))
18
+
16
19
  const assetsPaths = travelFiles(assetsDirPath)
17
20
 
21
+ const assetsInfos = assetsPaths.reduce<LocalAssetInfo[]>((result, localPath) => {
22
+ const uniqueKey = generateFileUniqueKey(localPath)
23
+ const { ext } = path.parse(localPath)
24
+ const isUploaded = uploadedAssetFileNames.includes(`${uniqueKey}${ext}`)
25
+ if (isUploaded) return result
26
+ return [...result, { localPath, ext, uniqueKey }]
27
+ }, [])
28
+
18
29
  const { results: remoteAssetInfoList } = await PromisePool.withConcurrency(2)
19
- .for(assetsPaths)
20
- .process(async (localPath) => {
21
- const uniqueKey = generateFileUniqueKey(localPath)
22
- const { ext } = path.parse(localPath)
23
- return upload({ localPath, uniqueKey, ext })
24
- })
25
-
26
- return remoteAssetInfoList
30
+ .for(assetsInfos)
31
+ .process(async (localAssetInfo) => upload(localAssetInfo))
32
+
33
+ return remoteAssetInfoList.filter(Boolean)
27
34
  }
package/src/utils.ts CHANGED
@@ -28,11 +28,13 @@ export const getCacheData = (cacheFilePath:string): any => {
28
28
  fs.accessSync(cacheFilePath)
29
29
  return JSON.parse(fs.readFileSync(cacheFilePath).toString())
30
30
  } catch (error) {
31
- return null
31
+ return {}
32
32
  }
33
33
  }
34
34
 
35
35
  export const saveCacheData = (cacheFilePath:string, cacheData:any) => {
36
+ const cacheDirPath = path.dirname(cacheFilePath)
37
+ if (!fs.existsSync(cacheDirPath)) fs.mkdirSync(cacheDirPath, { recursive: true })
36
38
  fs.writeFileSync(cacheFilePath, JSON.stringify(cacheData))
37
39
  }
38
40