@codelet/cli-service 0.0.16 → 0.0.18

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/config.d.ts CHANGED
@@ -6,6 +6,8 @@ export interface Config {
6
6
  source?: string[];
7
7
  /** 不参与打包、运行时 require 的外部脚本 */
8
8
  externalSource?: string[];
9
+ /** 微信构建后的 npm 目录,会原样复制到 dist,并按裸模块外部引入 */
10
+ npmDir?: string;
9
11
  /** 第一页 */
10
12
  pageIndex?: string;
11
13
  /** 静态文件 */
package/dist/config.js CHANGED
@@ -14,11 +14,12 @@ const path_1 = __importDefault(require("path"));
14
14
  const webpackbar_1 = __importDefault(require("webpackbar"));
15
15
  const utils_1 = require("./utils");
16
16
  function getDefaultConfig(options) {
17
- const { entryPath, source, externalSource, pageIndex, publicDir, isDev } = Object.assign({
17
+ const { entryPath, source, externalSource, npmDir, pageIndex, publicDir, isDev } = Object.assign({
18
18
  isDev: false,
19
19
  pageIndex: '',
20
20
  publicDir: 'public',
21
21
  externalSource: [],
22
+ npmDir: '',
22
23
  entryPath: './src',
23
24
  source: [
24
25
  'app.(js|ts)',
@@ -31,6 +32,7 @@ function getDefaultConfig(options) {
31
32
  entryPath,
32
33
  externalFiles,
33
34
  });
35
+ const resolveNpmDirRequest = npmDir ? (0, utils_1.createNpmDirRequestResolver)(npmDir) : () => '';
34
36
  // 模式
35
37
  const mode = isDev ? 'development' : 'production';
36
38
  // 插件
@@ -50,6 +52,7 @@ function getDefaultConfig(options) {
50
52
  noErrorOnMissing: true, // 若 public 目录不存在时不报错
51
53
  },
52
54
  ...(0, utils_1.createExternalCopyPatterns)(entryPath, externalSource),
55
+ ...(0, utils_1.createNpmDirCopyPatterns)(npmDir),
53
56
  ],
54
57
  }),
55
58
  new webpackbar_1.default(),
@@ -83,35 +86,48 @@ function getDefaultConfig(options) {
83
86
  entryPath,
84
87
  source,
85
88
  externalSource,
89
+ npmDir,
86
90
  publicDir,
87
91
  webpack: {
88
92
  mode,
89
93
  devtool: false,
90
- externalsType: 'commonjs',
91
- externals: [
92
- ({ context, request }, callback) => {
93
- if (!context || !request) {
94
- callback();
95
- return;
96
- }
97
- const targetFile = resolveExternalFile(context, request);
98
- if (!targetFile) {
99
- callback();
100
- return;
101
- }
102
- const targetRequest = path_1.default
103
- .relative((0, utils_1.resolve)(entryPath), targetFile)
104
- .replace(/\\/g, '/')
105
- .replace(/\.js$/, '');
106
- callback(null, `commonjs ${utils_1.externalRequestPlaceholderPrefix}${targetRequest}`);
107
- },
108
- ],
94
+ ...(externalSource.length > 0 || Boolean(npmDir)
95
+ ? {
96
+ externalsType: 'commonjs',
97
+ externals: [
98
+ ({ context, request }, callback) => {
99
+ if (!context || !request) {
100
+ callback();
101
+ return;
102
+ }
103
+ const npmRequest = resolveNpmDirRequest(request);
104
+ if (npmRequest) {
105
+ callback(null, `commonjs ${npmRequest}`);
106
+ return;
107
+ }
108
+ const targetFile = resolveExternalFile(context, request);
109
+ if (!targetFile) {
110
+ callback();
111
+ return;
112
+ }
113
+ const targetRequest = path_1.default
114
+ .relative((0, utils_1.resolve)(entryPath), targetFile)
115
+ .replace(/\\/g, '/')
116
+ .replace(/\.js$/, '');
117
+ callback(null, `commonjs ${utils_1.externalRequestPlaceholderPrefix}${targetRequest}`);
118
+ },
119
+ ],
120
+ }
121
+ : {}),
109
122
  output: {
110
123
  filename: '[name].js',
111
124
  path: (0, utils_1.resolve)('dist'),
112
125
  publicPath: '/',
113
126
  clean: true,
114
127
  },
128
+ watchOptions: {
129
+ ignored: (0, utils_1.createWatchIgnored)([publicDir, npmDir]),
130
+ },
115
131
  resolve: {
116
132
  alias: {
117
133
  '@': (0, utils_1.resolve)(entryPath),
package/dist/utils.d.ts CHANGED
@@ -13,10 +13,13 @@ export declare const parseDir: (entryPath: string, source: string[]) => {
13
13
  };
14
14
  export declare const resolveExternalFiles: (entryPath: string, externalSource: string[]) => string[];
15
15
  export declare const createExternalCopyPatterns: (entryPath: string, externalSource: string[]) => ObjectPattern[];
16
+ export declare const createNpmDirCopyPatterns: (npmDir: string) => ObjectPattern[];
16
17
  export declare const createExternalRequestResolver: (options: {
17
18
  entryPath: string;
18
19
  externalFiles: string[];
19
20
  }) => (context: string, request: string) => string;
21
+ export declare const createNpmDirRequestResolver: (npmDir: string) => (request: string) => string;
22
+ export declare const createWatchIgnored: (dirs: string[]) => NonNullable<NonNullable<Configuration["watchOptions"]>["ignored"]>;
20
23
  export declare class RewriteExternalRequestPlugin {
21
24
  apply(compiler: Compiler): void;
22
25
  }
package/dist/utils.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createOptimization = exports.RewriteExternalRequestPlugin = exports.createExternalRequestResolver = exports.createExternalCopyPatterns = exports.resolveExternalFiles = exports.parseDir = exports.resolveSourceRoot = exports.resolveEntryRoot = exports.resolve = exports.externalRequestPlaceholderPrefix = exports.cmd = void 0;
6
+ exports.createOptimization = exports.RewriteExternalRequestPlugin = exports.createWatchIgnored = exports.createNpmDirRequestResolver = exports.createExternalRequestResolver = exports.createNpmDirCopyPatterns = exports.createExternalCopyPatterns = exports.resolveExternalFiles = exports.parseDir = exports.resolveSourceRoot = exports.resolveEntryRoot = exports.resolve = exports.externalRequestPlaceholderPrefix = exports.cmd = void 0;
7
7
  exports.getOptionValue = getOptionValue;
8
8
  exports.parseArgv = parseArgv;
9
9
  exports.getConfig = getConfig;
@@ -53,6 +53,19 @@ const createExternalCopyPatterns = (entryPath, externalSource) => {
53
53
  }));
54
54
  };
55
55
  exports.createExternalCopyPatterns = createExternalCopyPatterns;
56
+ const createNpmDirCopyPatterns = (npmDir) => {
57
+ if (!npmDir) {
58
+ return [];
59
+ }
60
+ return [
61
+ {
62
+ from: (0, exports.resolve)(npmDir),
63
+ to: path_1.default.basename(npmDir),
64
+ noErrorOnMissing: true,
65
+ },
66
+ ];
67
+ };
68
+ exports.createNpmDirCopyPatterns = createNpmDirCopyPatterns;
56
69
  const createExternalRequestResolver = (options) => {
57
70
  const entryRoot = (0, exports.resolveEntryRoot)(options.entryPath);
58
71
  const externalFileSet = new Set(options.externalFiles);
@@ -80,6 +93,31 @@ const createExternalRequestResolver = (options) => {
80
93
  };
81
94
  };
82
95
  exports.createExternalRequestResolver = createExternalRequestResolver;
96
+ const createNpmDirRequestResolver = (npmDir) => {
97
+ const npmRoot = (0, exports.resolve)(npmDir);
98
+ return (request) => {
99
+ if (!request ||
100
+ request.startsWith('.') ||
101
+ request.startsWith('@/') ||
102
+ path_1.default.isAbsolute(request)) {
103
+ return '';
104
+ }
105
+ const requestPath = request.replace(/\\/g, '/');
106
+ const candidates = [
107
+ path_1.default.join(npmRoot, requestPath),
108
+ path_1.default.join(npmRoot, `${requestPath}.js`),
109
+ path_1.default.join(npmRoot, `${requestPath}.json`),
110
+ path_1.default.join(npmRoot, requestPath, 'index.js'),
111
+ path_1.default.join(npmRoot, requestPath, 'index.json'),
112
+ ];
113
+ return candidates.some((candidate) => fs_1.default.existsSync(candidate)) ? request : '';
114
+ };
115
+ };
116
+ exports.createNpmDirRequestResolver = createNpmDirRequestResolver;
117
+ const createWatchIgnored = (dirs) => {
118
+ return dirs.filter(Boolean).map((dir) => (0, exports.resolve)(dir).replace(/\\/g, '/'));
119
+ };
120
+ exports.createWatchIgnored = createWatchIgnored;
83
121
  class RewriteExternalRequestPlugin {
84
122
  apply(compiler) {
85
123
  compiler.hooks.thisCompilation.tap('RewriteExternalRequestPlugin', (compilation) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codelet/cli-service",
3
- "version": "0.0.16",
3
+ "version": "0.0.18",
4
4
  "description": "cli-service",
5
5
  "bin": {
6
6
  "codelet-cli-service": "./bin/codelet-cli-service.js"
@@ -41,10 +41,10 @@
41
41
  "webpack": "5.89.0",
42
42
  "webpack-merge": "^5.10.0",
43
43
  "webpackbar": "^6.0.0",
44
- "@codelet/app-json-webpack-plugin": "^0.0.8",
45
- "@codelet/copy-loader": "^0.0.7",
46
44
  "@codelet/hmr-webpack-plugin": "^0.0.3",
45
+ "@codelet/app-json-webpack-plugin": "^0.0.8",
47
46
  "@codelet/inject-chunk-webpack-plugin": "^0.0.8",
47
+ "@codelet/copy-loader": "^0.0.7",
48
48
  "@codelet/wxml-loader": "^0.0.9"
49
49
  },
50
50
  "devDependencies": {