我想将shelljs库包含到angular 2打字稿中。我已经将shelljs.d.ts文件包含到我的node_modules / shelljs库中。
我的package.json
"name": "myproj1",
"description": "myproj1: A project",
"typings": {
"shelljs": {
"definitions": "node_modules/shelljs/shelljs.d.ts",
"source": "node_modules/shelljs/global.js"
}
},
我的webpack.config.js
var path = require('path');
module.exports = {
entry: './app/web/boot.ts',
output: {
path: path.resolve(__dirname, "js"),
filename: "bundle.js"
},
resolve: {
extensions:['','.js','.ts']
},
module:{
loaders: [{
test: /\.ts/,
loaders: ['ts-loader'],
exclude: /node_modules/
}]
},
target: 'node'
};
我的package.json编译器选项:
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true
},
我的TS文件:
import child = require("shelljs");
somefun(){
child.exec('node --version',(code, stdout, stderr)=>{
console.log('Exit code:', code);
console.log('Program output:', stdout);
console.log('Program stderr:', stderr);
});
}
我收到错误消息“找不到模块'shelljs'”。请帮助我将库包括在我的项目中。
最佳答案
使用tsd
管理所有键入。
从您的项目目录:
npm install tsd -g
tsd install node --save
tsd install shelljs --save
然后在您的
foo.ts
中包含对shelljs的引用:/// <reference path="typings/shelljs/shelljs.d.ts" />
import {exec} from "shelljs";
exec('node --version', code => {
console.log('Exit code:', code);
});
根据评论,这里是摘要:
仅在
shelljs
环境中可以使用NodeJS
。这可以是原始的nodejs
实例,也可以是一些自身包含nodejs的项目,例如Electron
。您还应该注意所使用的模块系统。对于
NodeJS
,您可以使用CommonJS
,而无需任何其他捆绑软件。但是,如果为不存在NodeJS
的前端编译TypeScript,则还应将CommonJS
模块与browserify
捆绑在一起。或者,您可以使用其他类型的模块,例如amd
或SystemJS
,然后在Typescript编译器选项中设置“模块”:“系统”。查看所有选项here